clamp(), mapRange(), normalize(), interpolate()
در GSAP و دنیای انیمیشن و تعامل با اعداد، توابعی مانند clamp()
، mapRange()
، ()normalize
و ()interpolate
بسیار کاربردی هستند تا مقادیر را محدود، مقیاسدهی و تبدیل کنیم. این توابع به ویژه برای حرکت پویا، scroll animations و انیمیشنهای واکنشگرا مفیدند.
🟢 1️⃣ ()clamp
-
کاربرد: محدود کردن یک مقدار به بین حداقل و حداکثر مشخص.
-
ساختار:
مثال:
-
اگر مقدار کمتر از min باشد → min برمیگردد
-
اگر مقدار بیشتر از max باشد → max برمیگردد
🟡 2️⃣ ()mapRange
-
کاربرد: نگاشت یک مقدار از یک بازه به بازهای دیگر.
-
ساختار:
مثال:
-
نگاشت خطی: مقدار ورودی 0–300 → خروجی 0–600
🟠 3️⃣ ()normalize
-
کاربرد: مقیاسدهی یک مقدار به بازه
[0,1]
. -
ساختار:
مثال:
-
مقدار 0 → 0
-
مقدار max → 1
-
مقدار میانی → بین 0 و 1
🟣 4️⃣ ()interpolate
-
کاربرد: ترکیب یا تبدیل یک مقدار از یک بازه به مقادیر دیگر، مشابه lerp یا tween دستی.
-
ساختار ساده:
مثال:
-
ترکیب چند مقدار:
🟤 نکات حرفهای
-
()clamp
و()normalize
معمولاً با Scroll یا حرکت Drag استفاده میشوند. -
()mapRange
برای واسطهسازی مقادیر input → output بسیار مناسب است (مثلاً Scroll → Scale). -
()interpolate
برای Tweenهای سفارشی یا محاسبات پیچیده کاربرد دارد. -
این توابع اغلب با onUpdate یا modifiers GSAP ترکیب میشوند:
✅ جمعبندی
تابع | کاربرد | مثال ساده |
---|---|---|
clamp(min, max, value) | محدود کردن مقدار بین min و max | clamp(0,300,500) → 300 |
mapRange(fromMin, fromMax, toMin, toMax, value) | نگاشت خطی به بازه دیگر | mapRange(0,300,0,600,150) → 300 |
normalize(min, max, value) | تبدیل مقدار به 0–1 | normalize(0,100,75) → 0.75 |
interpolate(start, end, progress) | Tween دستی یا میانیابی | interpolate(0,200,0.25) → 50 |
این توابع، پایهای برای حرکات پویا، انیمیشنهای واکنشگرا و کنترل دقیق Tweenها در GSAP هستند.