كيفية عمل الـ Easing Curves ؟
easing curves تم إنشائها بواسطة (x,y) ويقصد بهما النسبة المئوية بين الرسوم المتحركة (y) والتوقيت (x).
والسؤال الذي يدور فى ذهنك الآن هو، ماذا لو وضعت منحنيات الـeasing فى حيز التنفيذ ؟ هنا تدخل مفاهيم التوقيت والتباعد فى الموضوع.
التوقيت والتباعد “Timing and Spacing”
التوقيت يقصد به مدة الرسوم المتحركة للإنتهاء منذ البداية. بينما يقصد بالتباعد عموماً هو المساحة بين كل إطار “frame” ولكن فى حالتنا هذه يقصد به المساحة بين كل بالمئة فى الرسوم المتحركة. فى الصورة السفلى توضح كيفية ترابط هذا التباعد بمنحنيات الـeasing. فى العمودى = بسرعة، بينما الأفقى = البطئ. Linear Ease Spacing (شكل من أشكال منحنيات الـeasing )


والآن، تصميم منحنى easing
السؤال المشهور فى هذه الجزئية هو “ماهو المنحنى الذي يجب علىّ إستخدامه …ومتى ؟!” والجواب هو – ان المنحنى يعتمد على السيناريو. بمعنى ليس هناك منحنى easing يفعل كل شئ. حيث صياغة هذه المنحنيات هى العنصر الأساسي لتصميم الحركة “motion”. منحنيات الـeasing صُممت عادةً بعد الفيزياء فى العالم الحقيقى ولكن أنصحك ألا تتبع تلك القواعد. العالم الحقيقى هو أفضل مكان للحصول على الإلهام للرسوم المتحركة “inspiration for animation”. على سبيل المثال : لا يوجد مشروع أو كائن يبدأ بسرعة كاملة أو يتوقف مرةً واحدة مثل ما تفعل منحنيات linear easing . المشاريع أو الكائنات لابد أن تبدأ بنوع من التسارع أو التباطؤ وليست سريعة فجأة أو بطيئة فجأة. هذا فقط واحد من العديد من المفاهيم، وقد حددت ديزنى 12 مبدأ للرسوم المتحركة…يمكنك مشاهدتها فى الفيديو الآتى : عند صياغة منحنيات الـeasing لابد أن تضع فى إعتبارك أن الرأسي سريع بينما الأفقى بطئ. والمنحنى الذي تقوم بإنشائه لابد أن يعتمد على التفاعل فى تصميمك.

منحنيات الـeasing فى التطوير
وهذه المنحنيات يطلق عليها إسم “Timing Functions” وهي المعادلات الرياضية التي تخلق منحنى بيزير “bezier ” الذي يحدد نمط التسارع على الرسم البياني. والوظيفة “function” التى يشيع إستخدامها فى التطوير هى cubic-bezier “مربع بيزر”.
في معظم لغات البرمجة، هناك بعض منحنيات easing (سبق ذكرها) مثل : ease-in ,ease-out ,ease-in-out.
فى الأسفل سرد لمنحنيات الـeasing المعروفة فى CSS
- (ease-in = cubic-bezier(.42, 0, 1, 1
- (ease-out =cubic-bezier(0, 0, .58, 1
- (ease-in-out = cubic-bezier(.42, 0, .58, 1
منحنيات الـeasing فى CSS
Global ومعنى “Global” هو الإجمالى أو الشامل بمعنى …أن الرسوم المتحركة تنطبق بنفس القدر لكل “keyframe”. مثال : إذا كنت تمتلك ارتداد “bounce” فإن الرسوم المتحركة سوف ترتد فى كل “keyframe”. كما هو موضح فى الصورة السفلى.
.object-class { animation-name: animation-rocks; animation-timing-function: cubic-bezier(1,.01,.91,.46); } View on CodePen
Curved Delays
لا ينطبق مفهوم منحنيات الـeasing على الرسوم المتحركة فقط بل ممكن أن ينطبق على التأخير “delays” ! والتي يمكن أن تكون ممتعة حقاً عندما يكون هناك العديد من العناصر على الشاشة المتحركة. والصورة السفلى مثال لذلك، حيث تم خلقها من خلال خلق “Sass loop ” وإستخدام بوصلة رياضيات “Compass math” للمساعدة فى حساب الـsine.
@for $i from 1 through 7 { &:nth-child(#{$i}) { animation-delay: ( #{sin(.4) * ($i)}s ); } View on CodePenالخاتمة : تكلمنا فى هذا المقال عن كيف تعمل منحنيات الـeasing، وكذلك التوقيت والتباعد فى هذه المنحنيات. كما شرحنا تصميم منحنى الـeasing. وتطرق الكلام أيضاً الى منحنيات الـeasing فى التطوير وفى الـCSS. المصدر]]>
6 thoughts on “كيفية عمل الـ Easing curves ؟”
بارك الله فيكم ..واصلوا
إيانا وإياكم يا فندم … 🙂
واصل أنت أيضاً متابعتنا 😀
مجهود يستحق الشكر ، شكرا كثيرا ^_^
ربنا يبارك فيك يا رامي، تعلقيك ده بيشجعنا كتير، أشكرك يا صديقي 🙂
مررت هنا لأحييك على ماتبذله من مواضيع قيمة ، حياك الله
شكرا لكم تستحق كل الاحترام والتقدير على الموضوع المميز