-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathabs.go
113 lines (101 loc) · 1.72 KB
/
abs.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package govec
// V2F
func (v V2F[T]) Abs() V2F[T] {
absX := v.X
absY := v.Y
if absX < 0 {
absX = -absX
}
if absY < 0 {
absY = -absY
}
return V2F[T]{X: absX, Y: absY}
}
func (v *V2F[T]) AbsInPlace() {
if v.X < 0 {
v.X = -v.X
}
if v.Y < 0 {
v.Y = -v.Y
}
}
// V3F
// Abs computes the absolute value of each component in the vector.
func (v V3F[T]) Abs() V3F[T] {
absX := v.X
absY := v.Y
absZ := v.Z
if absX < 0 {
absX = -absX
}
if absY < 0 {
absY = -absY
}
if absZ < 0 {
absZ = -absZ
}
return V3F[T]{X: absX, Y: absY, Z: absZ}
}
// AbsInPlace computes the absolute value of each component in the vector and updates the vector in place.
func (v *V3F[T]) AbsInPlace() {
if v.X < 0 {
v.X = -v.X
}
if v.Y < 0 {
v.Y = -v.Y
}
if v.Z < 0 {
v.Z = -v.Z
}
}
// V2I
// Abs computes the absolute value of each component in the vector.
func (v V2I[T]) Abs() V2I[T] {
absX := v.X
absY := v.Y
if absX < 0 {
absX = -absX
}
if absY < 0 {
absY = -absY
}
return V2I[T]{X: absX, Y: absY}
}
// AbsInPlace computes the absolute value of each component in the vector and updates the vector in place.
func (v *V2I[T]) AbsInPlace() {
if v.X < 0 {
v.X = -v.X
}
if v.Y < 0 {
v.Y = -v.Y
}
}
// V3I
// Abs computes the absolute value of each component in the vector.
func (v V3I[T]) Abs() V3I[T] {
absX := v.X
absY := v.Y
absZ := v.Z
if absX < 0 {
absX = -absX
}
if absY < 0 {
absY = -absY
}
if absZ < 0 {
absZ = -absZ
}
return V3I[T]{X: absX, Y: absY, Z: absZ}
}
// AbsInPlace computes the absolute value of each component in the vector and updates the vector in place.
func (v *V3I[T]) AbsInPlace() {
if v.X < 0 {
v.X = -v.X
}
if v.Y < 0 {
v.Y = -v.Y
}
if v.Z < 0 {
v.Z = -v.Z
}
}