-
Notifications
You must be signed in to change notification settings - Fork 1
/
nonlinear.go
85 lines (64 loc) · 1.76 KB
/
nonlinear.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package texture
import (
"github.com/jphsd/graphics2d/util"
)
// Wrap the NLs into named ones for marshalling
type NonLinear struct {
Name string
NLF util.NonLinear
}
func (nl *NonLinear) Eval0(t float64) float64 {
return nl.NLF.Transform(t)
}
func (nl *NonLinear) Eval(t float64) float64 {
// util.NonLinear is in range [0,1], map to [-1,1]
return nl.NLF.Transform(t)*2 - 1
}
func NewNLLinear() *NonLinear {
return &NonLinear{"NLLinear", &util.NLLinear{}}
}
func NewNLSquare() *NonLinear {
return &NonLinear{"NLSquare", &util.NLSquare{}}
}
func NewNLCube() *NonLinear {
return &NonLinear{"NLCube", &util.NLCube{}}
}
func NewNLExponential(v float64) *NonLinear {
return &NonLinear{"NLExponential", util.NewNLExponential(v)}
}
func NewNLLogarithmic(v float64) *NonLinear {
return &NonLinear{"NLLogarithmic", util.NewNLLogarithmic(v)}
}
func NewNLSin() *NonLinear {
return &NonLinear{"NLSin", &util.NLSin{}}
}
func NewNLSin1() *NonLinear {
return &NonLinear{"NLSin1", &util.NLSin1{}}
}
func NewNLSin2() *NonLinear {
return &NonLinear{"NLSin2", &util.NLSin2{}}
}
func NewNLCircle1() *NonLinear {
return &NonLinear{"NLCircle1", &util.NLCircle1{}}
}
func NewNLCircle2() *NonLinear {
return &NonLinear{"NLCircle2", &util.NLCircle2{}}
}
func NewNLCatenary() *NonLinear {
return &NonLinear{"NLCatenary", &util.NLCatenary{}}
}
func NewNLGauss(v float64) *NonLinear {
return &NonLinear{"NLGauss", util.NewNLGauss(v)}
}
func NewNLLogistic(u, v float64) *NonLinear {
return &NonLinear{"NLLogistic", util.NewNLLogistic(v, v)}
}
func NewNLP3() *NonLinear {
return &NonLinear{"NLP3", &util.NLP3{}}
}
func NewNLP5() *NonLinear {
return &NonLinear{"NLP5", &util.NLP5{}}
}
func NewNLRand(u, v float64, b bool) *NonLinear {
return &NonLinear{"NLRand", util.NewNLRand(u, v, b)}
}