44 * @exports zrender/animation/easing
55 */
66
7+ import { PI_OVER_2 , PI2 , PI , mathCos , mathSin , mathPow , mathSqrt , mathASin } from '../core/math' ;
8+
79type easingFunc = ( percent : number ) => number ;
810
911export type AnimationEasing = keyof typeof easingFuncs | easingFunc ;
@@ -126,21 +128,21 @@ const easingFuncs = {
126128 * @return {number }
127129 */
128130 sinusoidalIn ( k : number ) {
129- return 1 - Math . cos ( k * Math . PI / 2 ) ;
131+ return 1 - mathCos ( k * PI_OVER_2 ) ;
130132 } ,
131133 /**
132134 * @param {number } k
133135 * @return {number }
134136 */
135137 sinusoidalOut ( k : number ) {
136- return Math . sin ( k * Math . PI / 2 ) ;
138+ return mathSin ( k * PI_OVER_2 ) ;
137139 } ,
138140 /**
139141 * @param {number } k
140142 * @return {number }
141143 */
142144 sinusoidalInOut ( k : number ) {
143- return 0.5 * ( 1 - Math . cos ( Math . PI * k ) ) ;
145+ return 0.5 * ( 1 - mathCos ( PI * k ) ) ;
144146 } ,
145147
146148 // 指数曲线的缓动(2^t)
@@ -149,14 +151,14 @@ const easingFuncs = {
149151 * @return {number }
150152 */
151153 exponentialIn ( k : number ) {
152- return k === 0 ? 0 : Math . pow ( 1024 , k - 1 ) ;
154+ return k === 0 ? 0 : mathPow ( 1024 , k - 1 ) ;
153155 } ,
154156 /**
155157 * @param {number } k
156158 * @return {number }
157159 */
158160 exponentialOut ( k : number ) {
159- return k === 1 ? 1 : 1 - Math . pow ( 2 , - 10 * k ) ;
161+ return k === 1 ? 1 : 1 - mathPow ( 2 , - 10 * k ) ;
160162 } ,
161163 /**
162164 * @param {number } k
@@ -170,9 +172,9 @@ const easingFuncs = {
170172 return 1 ;
171173 }
172174 if ( ( k *= 2 ) < 1 ) {
173- return 0.5 * Math . pow ( 1024 , k - 1 ) ;
175+ return 0.5 * mathPow ( 1024 , k - 1 ) ;
174176 }
175- return 0.5 * ( - Math . pow ( 2 , - 10 * ( k - 1 ) ) + 2 ) ;
177+ return 0.5 * ( - mathPow ( 2 , - 10 * ( k - 1 ) ) + 2 ) ;
176178 } ,
177179
178180 // 圆形曲线的缓动(sqrt(1-t^2))
@@ -181,24 +183,24 @@ const easingFuncs = {
181183 * @return {number }
182184 */
183185 circularIn ( k : number ) {
184- return 1 - Math . sqrt ( 1 - k * k ) ;
186+ return 1 - mathSqrt ( 1 - k * k ) ;
185187 } ,
186188 /**
187189 * @param {number } k
188190 * @return {number }
189191 */
190192 circularOut ( k : number ) {
191- return Math . sqrt ( 1 - ( -- k * k ) ) ;
193+ return mathSqrt ( 1 - ( -- k * k ) ) ;
192194 } ,
193195 /**
194196 * @param {number } k
195197 * @return {number }
196198 */
197199 circularInOut ( k : number ) {
198200 if ( ( k *= 2 ) < 1 ) {
199- return - 0.5 * ( Math . sqrt ( 1 - k * k ) - 1 ) ;
201+ return - 0.5 * ( mathSqrt ( 1 - k * k ) - 1 ) ;
200202 }
201- return 0.5 * ( Math . sqrt ( 1 - ( k -= 2 ) * k ) + 1 ) ;
203+ return 0.5 * ( mathSqrt ( 1 - ( k -= 2 ) * k ) + 1 ) ;
202204 } ,
203205
204206 // 创建类似于弹簧在停止前来回振荡的动画
@@ -221,10 +223,10 @@ const easingFuncs = {
221223 s = p / 4 ;
222224 }
223225 else {
224- s = p * Math . asin ( 1 / a ) / ( 2 * Math . PI ) ;
226+ s = p * mathASin ( 1 / a ) / PI2 ;
225227 }
226- return - ( a * Math . pow ( 2 , 10 * ( k -= 1 ) )
227- * Math . sin ( ( k - s ) * ( 2 * Math . PI ) / p ) ) ;
228+ return - ( a * mathPow ( 2 , 10 * ( k -= 1 ) )
229+ * mathSin ( ( k - s ) * PI2 / p ) ) ;
228230 } ,
229231 /**
230232 * @param {number } k
@@ -245,38 +247,38 @@ const easingFuncs = {
245247 s = p / 4 ;
246248 }
247249 else {
248- s = p * Math . asin ( 1 / a ) / ( 2 * Math . PI ) ;
250+ s = p * mathASin ( 1 / a ) / PI2 ;
249251 }
250- return ( a * Math . pow ( 2 , - 10 * k )
251- * Math . sin ( ( k - s ) * ( 2 * Math . PI ) / p ) + 1 ) ;
252+ return ( a * mathPow ( 2 , - 10 * k )
253+ * mathSin ( ( k - s ) * PI2 / p ) + 1 ) ;
252254 } ,
253255 /**
254256 * @param {number } k
255257 * @return {number }
256258 */
257259 elasticInOut ( k : number ) {
258- let s ;
259- let a = 0.1 ;
260- let p = 0.4 ;
261260 if ( k === 0 ) {
262261 return 0 ;
263262 }
264263 if ( k === 1 ) {
265264 return 1 ;
266265 }
266+ let s ;
267+ let a = 0.1 ;
268+ const p = 0.4 ;
267269 if ( ! a || a < 1 ) {
268270 a = 1 ;
269271 s = p / 4 ;
270272 }
271273 else {
272- s = p * Math . asin ( 1 / a ) / ( 2 * Math . PI ) ;
274+ s = p * mathASin ( 1 / a ) / PI2 ;
273275 }
274276 if ( ( k *= 2 ) < 1 ) {
275- return - 0.5 * ( a * Math . pow ( 2 , 10 * ( k -= 1 ) )
276- * Math . sin ( ( k - s ) * ( 2 * Math . PI ) / p ) ) ;
277+ return - 0.5 * ( a * mathPow ( 2 , 10 * ( k -= 1 ) )
278+ * mathSin ( ( k - s ) * PI2 / p ) ) ;
277279 }
278- return a * Math . pow ( 2 , - 10 * ( k -= 1 ) )
279- * Math . sin ( ( k - s ) * ( 2 * Math . PI ) / p ) * 0.5 + 1 ;
280+ return a * mathPow ( 2 , - 10 * ( k -= 1 ) )
281+ * mathSin ( ( k - s ) * PI2 / p ) * 0.5 + 1 ;
280282
281283 } ,
282284
@@ -286,23 +288,23 @@ const easingFuncs = {
286288 * @return {number }
287289 */
288290 backIn ( k : number ) {
289- let s = 1.70158 ;
291+ const s = 1.70158 ;
290292 return k * k * ( ( s + 1 ) * k - s ) ;
291293 } ,
292294 /**
293295 * @param {number } k
294296 * @return {number }
295297 */
296298 backOut ( k : number ) {
297- let s = 1.70158 ;
299+ const s = 1.70158 ;
298300 return -- k * k * ( ( s + 1 ) * k + s ) + 1 ;
299301 } ,
300302 /**
301303 * @param {number } k
302304 * @return {number }
303305 */
304306 backInOut ( k : number ) {
305- let s = 1.70158 * 1.525 ;
307+ const s = 1.70158 * 1.525 ;
306308 if ( ( k *= 2 ) < 1 ) {
307309 return 0.5 * ( k * k * ( ( s + 1 ) * k - s ) ) ;
308310 }
0 commit comments