38 lines
653 B
Go
38 lines
653 B
Go
|
|
package vec2
|
||
|
|
|
||
|
|
import "zworld/plugin/math"
|
||
|
|
|
||
|
|
// New returns a vec2 from its components
|
||
|
|
func New(x, y float32) T {
|
||
|
|
return T{X: x, Y: y}
|
||
|
|
}
|
||
|
|
|
||
|
|
// NewI returns a vec2 from integer components
|
||
|
|
func NewI(x, y int) T {
|
||
|
|
return T{X: float32(x), Y: float32(y)}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Dot returns the dot product of two vectors.
|
||
|
|
func Dot(a, b T) float32 {
|
||
|
|
return a.X*b.X + a.Y*b.Y
|
||
|
|
}
|
||
|
|
|
||
|
|
// Distance returns the euclidian distance between two points.
|
||
|
|
func Distance(a, b T) float32 {
|
||
|
|
return a.Sub(b).Length()
|
||
|
|
}
|
||
|
|
|
||
|
|
func Min(a, b T) T {
|
||
|
|
return T{
|
||
|
|
X: math.Min(a.X, b.X),
|
||
|
|
Y: math.Min(a.Y, b.Y),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func Max(a, b T) T {
|
||
|
|
return T{
|
||
|
|
X: math.Max(a.X, b.X),
|
||
|
|
Y: math.Max(a.Y, b.Y),
|
||
|
|
}
|
||
|
|
}
|