-
Notifications
You must be signed in to change notification settings - Fork 4
/
quintic.go
40 lines (30 loc) · 854 Bytes
/
quintic.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package easing
var _ EaseFunctionProvider = &QuinticOutEaseProvider{}
var _ EaseFunctionProvider = &QuinticInEaseProvider{}
var _ EaseFunctionProvider = &QuinticInOutEaseProvider{}
type QuinticOutEaseProvider struct{}
func (*QuinticOutEaseProvider) New(_ []float64) func(float64) float64 {
quintic := func(v float64) float64 {
return v*v*v*v*v + 1
}
return quintic
}
type QuinticInEaseProvider struct{}
func (*QuinticInEaseProvider) New(_ []float64) func(float64) float64 {
quintic := func(v float64) float64 {
return v * v * v * v * v
}
return quintic
}
type QuinticInOutEaseProvider struct{}
func (*QuinticInOutEaseProvider) New(_ []float64) func(float64) float64 {
quintic := func(v float64) float64 {
v *= 2
if v < 1 {
return 0.5 * v * v * v * v * v
} else {
return 0.5 * ((v-2)*v*v*v*v + 2)
}
}
return quintic
}