@vpmedia/phaser 1.112.0 → 1.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1261 -1314
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts +14 -10
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts +10 -8
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +5 -4
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts +4 -3
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/const.d.ts.map +1 -1
- package/dist/phaser/core/device.d.ts.map +1 -1
- package/dist/phaser/core/device_util.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts +3 -2
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/event_manager.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +1 -1
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/frame.d.ts.map +1 -1
- package/dist/phaser/core/frame_data.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +8 -6
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts +40 -30
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts +3 -2
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts +3 -2
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +6 -4
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts +3 -2
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +4 -3
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +9 -8
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts +3 -2
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/registry.d.ts +7 -0
- package/dist/phaser/core/registry.d.ts.map +1 -0
- package/dist/phaser/core/scale_manager.d.ts +1 -1
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene.d.ts +0 -1
- package/dist/phaser/core/scene.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts +0 -1
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts +4 -3
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +6 -4
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +3 -2
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts +5 -4
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts +3 -2
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts +1 -1
- package/dist/phaser/core/time.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +1 -1
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/timer_event.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +10 -7
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +3 -2
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_easing.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts +3 -2
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/core/world.d.ts +3 -2
- package/dist/phaser/core/world.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts +3 -2
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +3 -2
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/graphics.d.ts +7 -6
- package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
- package/dist/phaser/display/canvas/pool.d.ts +2 -2
- package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts +10 -8
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/tinter.d.ts +3 -2
- package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
- package/dist/phaser/display/canvas/util.d.ts +2 -2
- package/dist/phaser/display/canvas/util.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts +14 -12
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +8 -5
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +4 -3
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +13 -10
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_batch.d.ts +3 -2
- package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts +18 -15
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +11 -9
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +7 -6
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +16 -11
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
- package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
- package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
- package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts +3 -2
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts +4 -1
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts +1 -1
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/point.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts +3 -2
- package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/util/line.d.ts.map +1 -1
- package/dist/phaser/geom/util/matrix.d.ts +2 -2
- package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/util/point.d.ts.map +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
- package/dist/phaser/util/math.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/phaser/core/animation.ts +64 -60
- package/src/phaser/core/animation_manager.ts +50 -53
- package/src/phaser/core/animation_parser.ts +9 -9
- package/src/phaser/core/array_set.ts +16 -17
- package/src/phaser/core/cache.ts +92 -93
- package/src/phaser/core/const.ts +1 -1
- package/src/phaser/core/device.ts +24 -29
- package/src/phaser/core/device_util.ts +22 -26
- package/src/phaser/core/dom.ts +54 -65
- package/src/phaser/core/event_manager.ts +64 -94
- package/src/phaser/core/factory.ts +14 -14
- package/src/phaser/core/frame.ts +28 -28
- package/src/phaser/core/frame_data.test.ts +100 -0
- package/src/phaser/core/frame_data.ts +24 -24
- package/src/phaser/core/frame_util.ts +2 -2
- package/src/phaser/core/game.ts +47 -48
- package/src/phaser/core/input.ts +104 -110
- package/src/phaser/core/input_handler.test.ts +113 -0
- package/src/phaser/core/input_handler.ts +199 -218
- package/src/phaser/core/input_mouse.ts +71 -54
- package/src/phaser/core/input_mspointer.ts +52 -39
- package/src/phaser/core/input_pointer.ts +81 -80
- package/src/phaser/core/input_touch.ts +49 -36
- package/src/phaser/core/loader.ts +173 -152
- package/src/phaser/core/loader_parser.ts +39 -57
- package/src/phaser/core/raf.ts +8 -7
- package/src/phaser/core/registry.test.ts +31 -0
- package/src/phaser/core/registry.ts +9 -0
- package/src/phaser/core/scale_manager.ts +156 -152
- package/src/phaser/core/scene.ts +9 -13
- package/src/phaser/core/scene_manager.ts +47 -47
- package/src/phaser/core/signal.test.ts +4 -4
- package/src/phaser/core/signal.ts +41 -52
- package/src/phaser/core/signal_binding.ts +26 -25
- package/src/phaser/core/signal_dispatch.test.ts +180 -0
- package/src/phaser/core/sound.ts +75 -83
- package/src/phaser/core/sound_manager.ts +52 -51
- package/src/phaser/core/sound_sprite.ts +17 -16
- package/src/phaser/core/stage.ts +25 -24
- package/src/phaser/core/time.ts +52 -52
- package/src/phaser/core/timer.test.ts +187 -0
- package/src/phaser/core/timer.ts +82 -69
- package/src/phaser/core/timer_event.ts +10 -10
- package/src/phaser/core/tween.ts +90 -93
- package/src/phaser/core/tween_data.ts +45 -51
- package/src/phaser/core/tween_easing.test.ts +106 -0
- package/src/phaser/core/tween_easing.ts +151 -123
- package/src/phaser/core/tween_manager.ts +19 -18
- package/src/phaser/core/world.ts +4 -3
- package/src/phaser/display/bitmap_text.ts +56 -64
- package/src/phaser/display/button.ts +33 -32
- package/src/phaser/display/canvas/buffer.ts +8 -8
- package/src/phaser/display/canvas/graphics.ts +36 -37
- package/src/phaser/display/canvas/masker.ts +2 -2
- package/src/phaser/display/canvas/pool.test.ts +106 -0
- package/src/phaser/display/canvas/pool.ts +25 -27
- package/src/phaser/display/canvas/renderer.ts +32 -31
- package/src/phaser/display/canvas/tinter.ts +25 -25
- package/src/phaser/display/canvas/util.ts +7 -10
- package/src/phaser/display/display_object.ts +114 -118
- package/src/phaser/display/graphics.ts +121 -119
- package/src/phaser/display/graphics_data.ts +12 -12
- package/src/phaser/display/graphics_data_util.ts +2 -3
- package/src/phaser/display/group.ts +50 -57
- package/src/phaser/display/image.ts +55 -52
- package/src/phaser/display/sprite_batch.ts +3 -2
- package/src/phaser/display/sprite_util.ts +48 -54
- package/src/phaser/display/text.ts +199 -204
- package/src/phaser/display/webgl/abstract_filter.ts +9 -9
- package/src/phaser/display/webgl/base_texture.ts +21 -24
- package/src/phaser/display/webgl/blend_manager.ts +6 -10
- package/src/phaser/display/webgl/earcut.ts +73 -37
- package/src/phaser/display/webgl/earcut_node.ts +10 -10
- package/src/phaser/display/webgl/fast_sprite_batch.ts +34 -34
- package/src/phaser/display/webgl/filter_manager.ts +13 -12
- package/src/phaser/display/webgl/filter_texture.ts +14 -13
- package/src/phaser/display/webgl/graphics.ts +51 -57
- package/src/phaser/display/webgl/graphics_data.ts +15 -14
- package/src/phaser/display/webgl/mask_manager.ts +2 -2
- package/src/phaser/display/webgl/render_texture.ts +26 -25
- package/src/phaser/display/webgl/renderer.ts +57 -62
- package/src/phaser/display/webgl/shader/complex.ts +28 -12
- package/src/phaser/display/webgl/shader/fast.ts +30 -12
- package/src/phaser/display/webgl/shader/normal.ts +70 -57
- package/src/phaser/display/webgl/shader/primitive.ts +26 -11
- package/src/phaser/display/webgl/shader/shader.test.ts +148 -0
- package/src/phaser/display/webgl/shader/strip.ts +27 -12
- package/src/phaser/display/webgl/shader_manager.test.ts +124 -0
- package/src/phaser/display/webgl/shader_manager.ts +26 -34
- package/src/phaser/display/webgl/sprite_batch.ts +67 -61
- package/src/phaser/display/webgl/stencil_manager.ts +23 -34
- package/src/phaser/display/webgl/texture.ts +43 -50
- package/src/phaser/display/webgl/texture_util.ts +2 -3
- package/src/phaser/display/webgl/util.ts +26 -25
- package/src/phaser/geom/circle.test.ts +2 -3
- package/src/phaser/geom/circle.ts +36 -36
- package/src/phaser/geom/ellipse.test.ts +73 -71
- package/src/phaser/geom/ellipse.ts +14 -14
- package/src/phaser/geom/line.test.ts +5 -5
- package/src/phaser/geom/line.ts +35 -35
- package/src/phaser/geom/matrix.test.ts +1 -1
- package/src/phaser/geom/matrix.ts +27 -27
- package/src/phaser/geom/point.test.ts +1 -2
- package/src/phaser/geom/point.ts +35 -35
- package/src/phaser/geom/polygon.test.ts +82 -0
- package/src/phaser/geom/polygon.ts +16 -16
- package/src/phaser/geom/rectangle.test.ts +14 -14
- package/src/phaser/geom/rectangle.ts +83 -75
- package/src/phaser/geom/rounded_rectangle.test.ts +1 -7
- package/src/phaser/geom/rounded_rectangle.ts +9 -9
- package/src/phaser/geom/util/circle.test.ts +25 -23
- package/src/phaser/geom/util/circle.ts +9 -18
- package/src/phaser/geom/util/ellipse.test.ts +7 -5
- package/src/phaser/geom/util/ellipse.ts +3 -2
- package/src/phaser/geom/util/line.test.ts +10 -8
- package/src/phaser/geom/util/line.ts +6 -16
- package/src/phaser/geom/util/matrix.test.ts +20 -18
- package/src/phaser/geom/util/matrix.ts +8 -15
- package/src/phaser/geom/util/point.test.ts +8 -6
- package/src/phaser/geom/util/point.ts +24 -28
- package/src/phaser/geom/util/polygon.test.ts +12 -10
- package/src/phaser/geom/util/polygon.ts +2 -2
- package/src/phaser/geom/util/rectangle.test.ts +10 -8
- package/src/phaser/geom/util/rectangle.ts +18 -37
- package/src/phaser/geom/util/rounded_rectangle.test.ts +11 -9
- package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
- package/src/phaser/util/math.test.ts +11 -11
- package/src/phaser/util/math.ts +29 -46
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import * as Easing from './tween_easing.js';
|
|
3
|
+
|
|
4
|
+
const SAMPLE_POINTS = [0, 0.1, 0.25, 0.4, 0.5, 0.6, 0.75, 0.9, 1];
|
|
5
|
+
|
|
6
|
+
const EXPECTED: Record<string, number[]> = {
|
|
7
|
+
BackIn: [
|
|
8
|
+
-0, -0.014314220000000002, -0.06413656250000001, -0.09935168000000003, -0.08769750000000004, -0.02902752000000009,
|
|
9
|
+
0.1825903124999999, 0.5911720199999999, 0.9999999999999998,
|
|
10
|
+
],
|
|
11
|
+
BackInOut: [
|
|
12
|
+
-0, -0.037518552000000004, -0.09968184375, 0.0899257920000001, 0.5, 0.9100742079999999, 1.09968184375,
|
|
13
|
+
1.0375185519999999, 1,
|
|
14
|
+
],
|
|
15
|
+
BackOut: [
|
|
16
|
+
2.220446049250313e-16, 0.4088279800000001, 0.8174096875000001, 1.02902752, 1.0876975, 1.09935168, 1.0641365625,
|
|
17
|
+
1.01431422, 1,
|
|
18
|
+
],
|
|
19
|
+
BounceIn: [
|
|
20
|
+
0, 0.01187500000000008, 0.02734375, 0.22750000000000004, 0.234375, 0.09000000000000019, 0.52734375,
|
|
21
|
+
0.9243750000000001, 1,
|
|
22
|
+
],
|
|
23
|
+
BounceInOut: [0, 0.030000000000000027, 0.1171875, 0.34875000000000006, 0.5, 0.6512499999999999, 0.8828125, 0.97, 1],
|
|
24
|
+
BounceOut: [
|
|
25
|
+
0, 0.07562500000000001, 0.47265625, 0.9099999999999998, 0.765625, 0.7725, 0.97265625, 0.9881249999999999, 1,
|
|
26
|
+
],
|
|
27
|
+
CircularIn: [
|
|
28
|
+
0, 0.005012562893380035, 0.031754163448145745, 0.08348486100883201, 0.1339745962155614, 0.19999999999999996,
|
|
29
|
+
0.3385621722338523, 0.5641101056459328, 1,
|
|
30
|
+
],
|
|
31
|
+
CircularInOut: [
|
|
32
|
+
-0, 0.010102051443364402, 0.0669872981077807, 0.20000000000000007, 0.5, 0.7999999999999999, 0.9330127018922193,
|
|
33
|
+
0.9898979485566356, 1,
|
|
34
|
+
],
|
|
35
|
+
CircularOut: [
|
|
36
|
+
0, 0.4358898943540673, 0.6614378277661477, 0.8, 0.8660254037844386, 0.916515138991168, 0.9682458365518543,
|
|
37
|
+
0.99498743710662, 1,
|
|
38
|
+
],
|
|
39
|
+
CubicIn: [0, 0.0010000000000000002, 0.015625, 0.06400000000000002, 0.125, 0.216, 0.421875, 0.7290000000000001, 1],
|
|
40
|
+
CubicInOut: [0, 0.004000000000000001, 0.0625, 0.25600000000000006, 0.5, 0.744, 0.9375, 0.996, 1],
|
|
41
|
+
CubicOut: [0, 0.2709999999999999, 0.578125, 0.784, 0.875, 0.9359999999999999, 0.984375, 0.999, 1],
|
|
42
|
+
ElasticIn: [
|
|
43
|
+
0, 1.1959441397923372e-18, 0.0039062499999999952, -0.015625, 1.1481063742006436e-17, 0.0625, -0.12500000000000003,
|
|
44
|
+
6.123233995736767e-17, 1,
|
|
45
|
+
],
|
|
46
|
+
ElasticInOut: [0, 0.001953125, 5.740531871003218e-18, -0.12500000000000003, 0.5, 1.125, 1, 0.998046875, 1],
|
|
47
|
+
ElasticOut: [0, 1, 1.125, 0.9375, 1, 1.015625, 0.99609375, 1, 1],
|
|
48
|
+
ExponentialIn: [
|
|
49
|
+
0, 0.0019531249999999998, 0.005524271728019903, 0.015625000000000003, 0.03125, 0.06249999999999999,
|
|
50
|
+
0.1767766952966369, 0.5000000000000001, 1,
|
|
51
|
+
],
|
|
52
|
+
ExponentialInOut: [0, 0.0019531249999999993, 0.015625, 0.12500000000000003, 0.5, 0.875, 0.984375, 0.998046875, 1],
|
|
53
|
+
ExponentialOut: [0, 0.5, 0.8232233047033631, 0.9375, 0.96875, 0.984375, 0.99447572827198, 0.998046875, 1],
|
|
54
|
+
LinearNone: [0, 0.1, 0.25, 0.4, 0.5, 0.6, 0.75, 0.9, 1],
|
|
55
|
+
QuadraticIn: [0, 0.010000000000000002, 0.0625, 0.16000000000000003, 0.25, 0.36, 0.5625, 0.81, 1],
|
|
56
|
+
QuadraticInOut: [0, 0.020000000000000004, 0.125, 0.32000000000000006, 0.5, 0.6799999999999999, 0.875, 0.98, 1],
|
|
57
|
+
QuadraticOut: [0, 0.19, 0.4375, 0.6400000000000001, 0.75, 0.84, 0.9375, 0.9900000000000001, 1],
|
|
58
|
+
QuarticIn: [
|
|
59
|
+
0, 0.00010000000000000003, 0.00390625, 0.025600000000000008, 0.0625, 0.1296, 0.31640625, 0.6561000000000001, 1,
|
|
60
|
+
],
|
|
61
|
+
QuarticInOut: [0, 0.0008000000000000003, 0.03125, 0.20480000000000007, 0.5, 0.7951999999999999, 0.96875, 0.9992, 1],
|
|
62
|
+
QuarticOut: [0, 0.3438999999999999, 0.68359375, 0.8704000000000001, 0.9375, 0.9744, 0.99609375, 0.9999, 1],
|
|
63
|
+
QuinticIn: [
|
|
64
|
+
0, 0.000010000000000000004, 0.0009765625, 0.010240000000000004, 0.03125, 0.07776, 0.2373046875, 0.5904900000000002,
|
|
65
|
+
1,
|
|
66
|
+
],
|
|
67
|
+
QuinticInOut: [
|
|
68
|
+
0, 0.00016000000000000007, 0.015625, 0.16384000000000007, 0.5, 0.8361599999999999, 0.984375, 0.99984, 1,
|
|
69
|
+
],
|
|
70
|
+
QuinticOut: [0, 0.4095099999999998, 0.7626953125, 0.92224, 0.96875, 0.98976, 0.9990234375, 0.99999, 1],
|
|
71
|
+
SinusoidalIn: [
|
|
72
|
+
0, 0.01231165940486223, 0.07612046748871326, 0.19098300562505255, 0.2928932188134524, 0.41221474770752686,
|
|
73
|
+
0.6173165676349102, 0.843565534959769, 1,
|
|
74
|
+
],
|
|
75
|
+
SinusoidalInOut: [
|
|
76
|
+
0, 0.024471741852423234, 0.1464466094067262, 0.3454915028125263, 0.49999999999999994, 0.6545084971874737,
|
|
77
|
+
0.8535533905932737, 0.9755282581475768, 1,
|
|
78
|
+
],
|
|
79
|
+
SinusoidalOut: [
|
|
80
|
+
0, 0.15643446504023087, 0.3826834323650898, 0.5877852522924731, 0.7071067811865475, 0.8090169943749475,
|
|
81
|
+
0.9238795325112867, 0.9876883405951378, 1,
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
describe('tween_easing', () => {
|
|
86
|
+
it.each(Object.keys(EXPECTED))('%s matches its reference curve', (name) => {
|
|
87
|
+
const fn = (Easing as unknown as Record<string, (k: number) => number>)[name]!;
|
|
88
|
+
const actual = SAMPLE_POINTS.map((k) => fn(k));
|
|
89
|
+
actual.forEach((value, index) => {
|
|
90
|
+
expect(value).toBeCloseTo(EXPECTED[name]![index]!, 12);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it.each(Object.keys(EXPECTED))('%s is anchored at both ends', (name) => {
|
|
95
|
+
const fn = (Easing as unknown as Record<string, (k: number) => number>)[name]!;
|
|
96
|
+
expect(fn(0)).toBeCloseTo(0, 12);
|
|
97
|
+
expect(fn(1)).toBeCloseTo(1, 12);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it.each(Object.keys(EXPECTED))('%s does not mutate beyond its return value', (name) => {
|
|
101
|
+
const fn = (Easing as unknown as Record<string, (k: number) => number>)[name]!;
|
|
102
|
+
SAMPLE_POINTS.forEach((k) => {
|
|
103
|
+
expect(fn(k)).toBe(fn(k));
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
@@ -3,36 +3,34 @@
|
|
|
3
3
|
* @param {number} k - TBD.
|
|
4
4
|
* @returns {number} TBD.
|
|
5
5
|
*/
|
|
6
|
-
export const LinearNone = (k: number) =>
|
|
7
|
-
return k;
|
|
8
|
-
};
|
|
6
|
+
export const LinearNone = (k: number): number => k;
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* TBD.
|
|
12
10
|
* @param {number} k - TBD.
|
|
13
11
|
* @returns {number} TBD.
|
|
14
12
|
*/
|
|
15
|
-
export const QuadraticIn = (k: number) =>
|
|
16
|
-
return k * k;
|
|
17
|
-
};
|
|
13
|
+
export const QuadraticIn = (k: number): number => k * k;
|
|
18
14
|
|
|
19
15
|
/**
|
|
20
16
|
* TBD.
|
|
21
17
|
* @param {number} k - TBD.
|
|
22
18
|
* @returns {number} TBD.
|
|
23
19
|
*/
|
|
24
|
-
export const QuadraticOut = (k: number) =>
|
|
25
|
-
return k * (2 - k);
|
|
26
|
-
};
|
|
20
|
+
export const QuadraticOut = (k: number): number => k * (2 - k);
|
|
27
21
|
|
|
28
22
|
/**
|
|
29
23
|
* TBD.
|
|
30
24
|
* @param {number} k - TBD.
|
|
31
25
|
* @returns {number} TBD.
|
|
32
26
|
*/
|
|
33
|
-
export const QuadraticInOut = (k: number) => {
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
export const QuadraticInOut = (k: number): number => {
|
|
28
|
+
const t = k * 2;
|
|
29
|
+
if (t < 1) {
|
|
30
|
+
return 0.5 * t * t;
|
|
31
|
+
}
|
|
32
|
+
const u = t - 1;
|
|
33
|
+
return -0.5 * (u * (u - 2) - 1);
|
|
36
34
|
};
|
|
37
35
|
|
|
38
36
|
/**
|
|
@@ -40,17 +38,16 @@ export const QuadraticInOut = (k: number) => {
|
|
|
40
38
|
* @param {number} k - TBD.
|
|
41
39
|
* @returns {number} TBD.
|
|
42
40
|
*/
|
|
43
|
-
export const CubicIn = (k: number) =>
|
|
44
|
-
return k * k * k;
|
|
45
|
-
};
|
|
41
|
+
export const CubicIn = (k: number): number => k * k * k;
|
|
46
42
|
|
|
47
43
|
/**
|
|
48
44
|
* TBD.
|
|
49
45
|
* @param {number} k - TBD.
|
|
50
46
|
* @returns {number} TBD.
|
|
51
47
|
*/
|
|
52
|
-
export const CubicOut = (k: number) => {
|
|
53
|
-
|
|
48
|
+
export const CubicOut = (k: number): number => {
|
|
49
|
+
const u = k - 1;
|
|
50
|
+
return u * u * u + 1;
|
|
54
51
|
};
|
|
55
52
|
|
|
56
53
|
/**
|
|
@@ -58,9 +55,13 @@ export const CubicOut = (k: number) => {
|
|
|
58
55
|
* @param {number} k - TBD.
|
|
59
56
|
* @returns {number} TBD.
|
|
60
57
|
*/
|
|
61
|
-
export const CubicInOut = (k: number) => {
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
export const CubicInOut = (k: number): number => {
|
|
59
|
+
const t = k * 2;
|
|
60
|
+
if (t < 1) {
|
|
61
|
+
return 0.5 * t * t * t;
|
|
62
|
+
}
|
|
63
|
+
const u = t - 2;
|
|
64
|
+
return 0.5 * (u * u * u + 2);
|
|
64
65
|
};
|
|
65
66
|
|
|
66
67
|
/**
|
|
@@ -68,17 +69,16 @@ export const CubicInOut = (k: number) => {
|
|
|
68
69
|
* @param {number} k - TBD.
|
|
69
70
|
* @returns {number} TBD.
|
|
70
71
|
*/
|
|
71
|
-
export const QuarticIn = (k: number) =>
|
|
72
|
-
return k * k * k * k;
|
|
73
|
-
};
|
|
72
|
+
export const QuarticIn = (k: number): number => k * k * k * k;
|
|
74
73
|
|
|
75
74
|
/**
|
|
76
75
|
* TBD.
|
|
77
76
|
* @param {number} k - TBD.
|
|
78
77
|
* @returns {number} TBD.
|
|
79
78
|
*/
|
|
80
|
-
export const QuarticOut = (k: number) => {
|
|
81
|
-
|
|
79
|
+
export const QuarticOut = (k: number): number => {
|
|
80
|
+
const u = k - 1;
|
|
81
|
+
return 1 - u * u * u * u;
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
/**
|
|
@@ -86,9 +86,13 @@ export const QuarticOut = (k: number) => {
|
|
|
86
86
|
* @param {number} k - TBD.
|
|
87
87
|
* @returns {number} TBD.
|
|
88
88
|
*/
|
|
89
|
-
export const QuarticInOut = (k: number) => {
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
export const QuarticInOut = (k: number): number => {
|
|
90
|
+
const t = k * 2;
|
|
91
|
+
if (t < 1) {
|
|
92
|
+
return 0.5 * t * t * t * t;
|
|
93
|
+
}
|
|
94
|
+
const u = t - 2;
|
|
95
|
+
return -0.5 * (u * u * u * u - 2);
|
|
92
96
|
};
|
|
93
97
|
|
|
94
98
|
/**
|
|
@@ -96,17 +100,16 @@ export const QuarticInOut = (k: number) => {
|
|
|
96
100
|
* @param {number} k - TBD.
|
|
97
101
|
* @returns {number} TBD.
|
|
98
102
|
*/
|
|
99
|
-
export const QuinticIn = (k: number) =>
|
|
100
|
-
return k * k * k * k * k;
|
|
101
|
-
};
|
|
103
|
+
export const QuinticIn = (k: number): number => k * k * k * k * k;
|
|
102
104
|
|
|
103
105
|
/**
|
|
104
106
|
* TBD.
|
|
105
107
|
* @param {number} k - TBD.
|
|
106
108
|
* @returns {number} TBD.
|
|
107
109
|
*/
|
|
108
|
-
export const QuinticOut = (k: number) => {
|
|
109
|
-
|
|
110
|
+
export const QuinticOut = (k: number): number => {
|
|
111
|
+
const u = k - 1;
|
|
112
|
+
return u * u * u * u * u + 1;
|
|
110
113
|
};
|
|
111
114
|
|
|
112
115
|
/**
|
|
@@ -114,9 +117,13 @@ export const QuinticOut = (k: number) => {
|
|
|
114
117
|
* @param {number} k - TBD.
|
|
115
118
|
* @returns {number} TBD.
|
|
116
119
|
*/
|
|
117
|
-
export const QuinticInOut = (k: number) => {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
export const QuinticInOut = (k: number): number => {
|
|
121
|
+
const t = k * 2;
|
|
122
|
+
if (t < 1) {
|
|
123
|
+
return 0.5 * t * t * t * t * t;
|
|
124
|
+
}
|
|
125
|
+
const u = t - 2;
|
|
126
|
+
return 0.5 * (u * u * u * u * u + 2);
|
|
120
127
|
};
|
|
121
128
|
|
|
122
129
|
/**
|
|
@@ -124,9 +131,13 @@ export const QuinticInOut = (k: number) => {
|
|
|
124
131
|
* @param {number} k - TBD.
|
|
125
132
|
* @returns {number} TBD.
|
|
126
133
|
*/
|
|
127
|
-
export const SinusoidalIn = (k: number) => {
|
|
128
|
-
if (k === 0)
|
|
129
|
-
|
|
134
|
+
export const SinusoidalIn = (k: number): number => {
|
|
135
|
+
if (k === 0) {
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
if (k === 1) {
|
|
139
|
+
return 1;
|
|
140
|
+
}
|
|
130
141
|
return 1 - Math.cos((k * Math.PI) / 2);
|
|
131
142
|
};
|
|
132
143
|
|
|
@@ -135,9 +146,13 @@ export const SinusoidalIn = (k: number) => {
|
|
|
135
146
|
* @param {number} k - TBD.
|
|
136
147
|
* @returns {number} TBD.
|
|
137
148
|
*/
|
|
138
|
-
export const SinusoidalOut = (k: number) => {
|
|
139
|
-
if (k === 0)
|
|
140
|
-
|
|
149
|
+
export const SinusoidalOut = (k: number): number => {
|
|
150
|
+
if (k === 0) {
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
if (k === 1) {
|
|
154
|
+
return 1;
|
|
155
|
+
}
|
|
141
156
|
return Math.sin((k * Math.PI) / 2);
|
|
142
157
|
};
|
|
143
158
|
|
|
@@ -146,9 +161,13 @@ export const SinusoidalOut = (k: number) => {
|
|
|
146
161
|
* @param {number} k - TBD.
|
|
147
162
|
* @returns {number} TBD.
|
|
148
163
|
*/
|
|
149
|
-
export const SinusoidalInOut = (k: number) => {
|
|
150
|
-
if (k === 0)
|
|
151
|
-
|
|
164
|
+
export const SinusoidalInOut = (k: number): number => {
|
|
165
|
+
if (k === 0) {
|
|
166
|
+
return 0;
|
|
167
|
+
}
|
|
168
|
+
if (k === 1) {
|
|
169
|
+
return 1;
|
|
170
|
+
}
|
|
152
171
|
return 0.5 * (1 - Math.cos(Math.PI * k));
|
|
153
172
|
};
|
|
154
173
|
|
|
@@ -157,29 +176,32 @@ export const SinusoidalInOut = (k: number) => {
|
|
|
157
176
|
* @param {number} k - TBD.
|
|
158
177
|
* @returns {number} TBD.
|
|
159
178
|
*/
|
|
160
|
-
export const ExponentialIn = (k: number) =>
|
|
161
|
-
return k === 0 ? 0 : Math.pow(1024, k - 1);
|
|
162
|
-
};
|
|
179
|
+
export const ExponentialIn = (k: number): number => (k === 0 ? 0 : 1024 ** (k - 1));
|
|
163
180
|
|
|
164
181
|
/**
|
|
165
182
|
* TBD.
|
|
166
183
|
* @param {number} k - TBD.
|
|
167
184
|
* @returns {number} TBD.
|
|
168
185
|
*/
|
|
169
|
-
export const ExponentialOut = (k: number) =>
|
|
170
|
-
return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);
|
|
171
|
-
};
|
|
186
|
+
export const ExponentialOut = (k: number): number => (k === 1 ? 1 : 1 - 2 ** (-10 * k));
|
|
172
187
|
|
|
173
188
|
/**
|
|
174
189
|
* TBD.
|
|
175
190
|
* @param {number} k - TBD.
|
|
176
191
|
* @returns {number} TBD.
|
|
177
192
|
*/
|
|
178
|
-
export const ExponentialInOut = (k: number) => {
|
|
179
|
-
if (k === 0)
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
193
|
+
export const ExponentialInOut = (k: number): number => {
|
|
194
|
+
if (k === 0) {
|
|
195
|
+
return 0;
|
|
196
|
+
}
|
|
197
|
+
if (k === 1) {
|
|
198
|
+
return 1;
|
|
199
|
+
}
|
|
200
|
+
const t = k * 2;
|
|
201
|
+
if (t < 1) {
|
|
202
|
+
return 0.5 * 1024 ** (t - 1);
|
|
203
|
+
}
|
|
204
|
+
return 0.5 * (-(2 ** (-10 * (t - 1))) + 2);
|
|
183
205
|
};
|
|
184
206
|
|
|
185
207
|
/**
|
|
@@ -187,17 +209,16 @@ export const ExponentialInOut = (k: number) => {
|
|
|
187
209
|
* @param {number} k - TBD.
|
|
188
210
|
* @returns {number} TBD.
|
|
189
211
|
*/
|
|
190
|
-
export const CircularIn = (k: number) =>
|
|
191
|
-
return 1 - Math.sqrt(1 - k * k);
|
|
192
|
-
};
|
|
212
|
+
export const CircularIn = (k: number): number => 1 - Math.sqrt(1 - k * k);
|
|
193
213
|
|
|
194
214
|
/**
|
|
195
215
|
* TBD.
|
|
196
216
|
* @param {number} k - TBD.
|
|
197
217
|
* @returns {number} TBD.
|
|
198
218
|
*/
|
|
199
|
-
export const CircularOut = (k: number) => {
|
|
200
|
-
|
|
219
|
+
export const CircularOut = (k: number): number => {
|
|
220
|
+
const u = k - 1;
|
|
221
|
+
return Math.sqrt(1 - u * u);
|
|
201
222
|
};
|
|
202
223
|
|
|
203
224
|
/**
|
|
@@ -205,29 +226,33 @@ export const CircularOut = (k: number) => {
|
|
|
205
226
|
* @param {number} k - TBD.
|
|
206
227
|
* @returns {number} TBD.
|
|
207
228
|
*/
|
|
208
|
-
export const CircularInOut = (k: number) => {
|
|
209
|
-
|
|
210
|
-
|
|
229
|
+
export const CircularInOut = (k: number): number => {
|
|
230
|
+
const t = k * 2;
|
|
231
|
+
if (t < 1) {
|
|
232
|
+
return -0.5 * (Math.sqrt(1 - t * t) - 1);
|
|
233
|
+
}
|
|
234
|
+
const u = t - 2;
|
|
235
|
+
return 0.5 * (Math.sqrt(1 - u * u) + 1);
|
|
211
236
|
};
|
|
212
237
|
|
|
238
|
+
const ELASTIC_AMPLITUDE = 1;
|
|
239
|
+
const ELASTIC_PERIOD = 0.4;
|
|
240
|
+
const ELASTIC_PHASE = ELASTIC_PERIOD / 4;
|
|
241
|
+
|
|
213
242
|
/**
|
|
214
243
|
* TBD.
|
|
215
244
|
* @param {number} k - TBD.
|
|
216
245
|
* @returns {number} TBD.
|
|
217
246
|
*/
|
|
218
|
-
export const ElasticIn = (k: number) => {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
if (k ===
|
|
223
|
-
|
|
224
|
-
if (!a || a < 1) {
|
|
225
|
-
a = 1;
|
|
226
|
-
s = p / 4;
|
|
227
|
-
} else {
|
|
228
|
-
s = (p * Math.asin(1 / a)) / (2 * Math.PI);
|
|
247
|
+
export const ElasticIn = (k: number): number => {
|
|
248
|
+
if (k === 0) {
|
|
249
|
+
return 0;
|
|
250
|
+
}
|
|
251
|
+
if (k === 1) {
|
|
252
|
+
return 1;
|
|
229
253
|
}
|
|
230
|
-
|
|
254
|
+
const u = k - 1;
|
|
255
|
+
return -(ELASTIC_AMPLITUDE * 2 ** (10 * u) * Math.sin(((u - ELASTIC_PHASE) * (2 * Math.PI)) / ELASTIC_PERIOD));
|
|
231
256
|
};
|
|
232
257
|
|
|
233
258
|
/**
|
|
@@ -235,19 +260,14 @@ export const ElasticIn = (k: number) => {
|
|
|
235
260
|
* @param {number} k - TBD.
|
|
236
261
|
* @returns {number} TBD.
|
|
237
262
|
*/
|
|
238
|
-
export const ElasticOut = (k: number) => {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
const p = 0.4;
|
|
242
|
-
if (k === 0) return 0;
|
|
243
|
-
if (k === 1) return 1;
|
|
244
|
-
if (!a || a < 1) {
|
|
245
|
-
a = 1;
|
|
246
|
-
s = p / 4;
|
|
247
|
-
} else {
|
|
248
|
-
s = (p * Math.asin(1 / a)) / (2 * Math.PI);
|
|
263
|
+
export const ElasticOut = (k: number): number => {
|
|
264
|
+
if (k === 0) {
|
|
265
|
+
return 0;
|
|
249
266
|
}
|
|
250
|
-
|
|
267
|
+
if (k === 1) {
|
|
268
|
+
return 1;
|
|
269
|
+
}
|
|
270
|
+
return ELASTIC_AMPLITUDE * 2 ** (-10 * k) * Math.sin(((k - ELASTIC_PHASE) * (2 * Math.PI)) / ELASTIC_PERIOD) + 1;
|
|
251
271
|
};
|
|
252
272
|
|
|
253
273
|
/**
|
|
@@ -255,40 +275,40 @@ export const ElasticOut = (k: number) => {
|
|
|
255
275
|
* @param {number} k - TBD.
|
|
256
276
|
* @returns {number} TBD.
|
|
257
277
|
*/
|
|
258
|
-
export const ElasticInOut = (k: number) => {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
if (k ===
|
|
263
|
-
|
|
264
|
-
if (!a || a < 1) {
|
|
265
|
-
a = 1;
|
|
266
|
-
s = p / 4;
|
|
267
|
-
} else {
|
|
268
|
-
s = (p * Math.asin(1 / a)) / (2 * Math.PI);
|
|
278
|
+
export const ElasticInOut = (k: number): number => {
|
|
279
|
+
if (k === 0) {
|
|
280
|
+
return 0;
|
|
281
|
+
}
|
|
282
|
+
if (k === 1) {
|
|
283
|
+
return 1;
|
|
269
284
|
}
|
|
270
|
-
|
|
271
|
-
|
|
285
|
+
const t = k * 2;
|
|
286
|
+
const u = t - 1;
|
|
287
|
+
const oscillation = Math.sin(((u - ELASTIC_PHASE) * (2 * Math.PI)) / ELASTIC_PERIOD);
|
|
288
|
+
if (t < 1) {
|
|
289
|
+
return -0.5 * (ELASTIC_AMPLITUDE * 2 ** (10 * u) * oscillation);
|
|
290
|
+
}
|
|
291
|
+
return ELASTIC_AMPLITUDE * 2 ** (-10 * u) * oscillation * 0.5 + 1;
|
|
272
292
|
};
|
|
273
293
|
|
|
294
|
+
const BACK_OVERSHOOT = 1.70158;
|
|
295
|
+
const BACK_OVERSHOOT_IN_OUT = BACK_OVERSHOOT * 1.525;
|
|
296
|
+
|
|
274
297
|
/**
|
|
275
298
|
* TBD.
|
|
276
299
|
* @param {number} k - TBD.
|
|
277
300
|
* @returns {number} TBD.
|
|
278
301
|
*/
|
|
279
|
-
export const BackIn = (k: number) =>
|
|
280
|
-
const s = 1.70158;
|
|
281
|
-
return k * k * ((s + 1) * k - s);
|
|
282
|
-
};
|
|
302
|
+
export const BackIn = (k: number): number => k * k * ((BACK_OVERSHOOT + 1) * k - BACK_OVERSHOOT);
|
|
283
303
|
|
|
284
304
|
/**
|
|
285
305
|
* TBD.
|
|
286
306
|
* @param {number} k - TBD.
|
|
287
307
|
* @returns {number} TBD.
|
|
288
308
|
*/
|
|
289
|
-
export const BackOut = (k: number) => {
|
|
290
|
-
const
|
|
291
|
-
return
|
|
309
|
+
export const BackOut = (k: number): number => {
|
|
310
|
+
const u = k - 1;
|
|
311
|
+
return u * u * ((BACK_OVERSHOOT + 1) * u + BACK_OVERSHOOT) + 1;
|
|
292
312
|
};
|
|
293
313
|
|
|
294
314
|
/**
|
|
@@ -296,10 +316,13 @@ export const BackOut = (k: number) => {
|
|
|
296
316
|
* @param {number} k - TBD.
|
|
297
317
|
* @returns {number} TBD.
|
|
298
318
|
*/
|
|
299
|
-
export const BackInOut = (k: number) => {
|
|
300
|
-
const
|
|
301
|
-
if (
|
|
302
|
-
|
|
319
|
+
export const BackInOut = (k: number): number => {
|
|
320
|
+
const t = k * 2;
|
|
321
|
+
if (t < 1) {
|
|
322
|
+
return 0.5 * (t * t * ((BACK_OVERSHOOT_IN_OUT + 1) * t - BACK_OVERSHOOT_IN_OUT));
|
|
323
|
+
}
|
|
324
|
+
const u = t - 2;
|
|
325
|
+
return 0.5 * (u * u * ((BACK_OVERSHOOT_IN_OUT + 1) * u + BACK_OVERSHOOT_IN_OUT) + 2);
|
|
303
326
|
};
|
|
304
327
|
|
|
305
328
|
/**
|
|
@@ -307,15 +330,20 @@ export const BackInOut = (k: number) => {
|
|
|
307
330
|
* @param {number} k - TBD.
|
|
308
331
|
* @returns {number} TBD.
|
|
309
332
|
*/
|
|
310
|
-
export const BounceOut = (k: number) => {
|
|
333
|
+
export const BounceOut = (k: number): number => {
|
|
311
334
|
if (k < 1 / 2.75) {
|
|
312
335
|
return 7.5625 * k * k;
|
|
313
|
-
} else if (k < 2 / 2.75) {
|
|
314
|
-
return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;
|
|
315
|
-
} else if (k < 2.5 / 2.75) {
|
|
316
|
-
return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;
|
|
317
336
|
}
|
|
318
|
-
|
|
337
|
+
if (k < 2 / 2.75) {
|
|
338
|
+
const u = k - 1.5 / 2.75;
|
|
339
|
+
return 7.5625 * u * u + 0.75;
|
|
340
|
+
}
|
|
341
|
+
if (k < 2.5 / 2.75) {
|
|
342
|
+
const u = k - 2.25 / 2.75;
|
|
343
|
+
return 7.5625 * u * u + 0.9375;
|
|
344
|
+
}
|
|
345
|
+
const u = k - 2.625 / 2.75;
|
|
346
|
+
return 7.5625 * u * u + 0.984375;
|
|
319
347
|
};
|
|
320
348
|
|
|
321
349
|
/**
|
|
@@ -323,16 +351,16 @@ export const BounceOut = (k: number) => {
|
|
|
323
351
|
* @param {number} k - TBD.
|
|
324
352
|
* @returns {number} TBD.
|
|
325
353
|
*/
|
|
326
|
-
export const BounceIn = (k: number) =>
|
|
327
|
-
return 1 - BounceOut(1 - k);
|
|
328
|
-
};
|
|
354
|
+
export const BounceIn = (k: number): number => 1 - BounceOut(1 - k);
|
|
329
355
|
|
|
330
356
|
/**
|
|
331
357
|
* TBD.
|
|
332
358
|
* @param {number} k - TBD.
|
|
333
359
|
* @returns {number} TBD.
|
|
334
360
|
*/
|
|
335
|
-
export const BounceInOut = (k: number) => {
|
|
336
|
-
if (k < 0.5)
|
|
361
|
+
export const BounceInOut = (k: number): number => {
|
|
362
|
+
if (k < 0.5) {
|
|
363
|
+
return BounceIn(k * 2) * 0.5;
|
|
364
|
+
}
|
|
337
365
|
return BounceOut(k * 2 - 1) * 0.5 + 0.5;
|
|
338
366
|
};
|