Files
fluids/fluid/fieldvector.go

37 lines
709 B
Go
Raw Normal View History

package fluid
import "math"
type FieldVector struct {
X float32
Y float32
}
func (v FieldVector) DotProduct(p FieldVector) float32 {
return v.X*p.X + v.Y*p.Y
}
func (v FieldVector) Magnitude() float32 {
return float32(math.Sqrt(float64(v.X*v.X + v.Y*v.Y)))
}
func (v FieldVector) Add(p FieldVector) FieldVector {
return FieldVector{X: v.X + p.X, Y: v.Y + p.Y}
}
func (v FieldVector) Subtract(p FieldVector) FieldVector {
return FieldVector{X: v.X - p.X, Y: v.Y - p.Y}
}
func (v FieldVector) Scale(s float32) FieldVector {
return FieldVector{X: v.X * s, Y: v.Y * s}
}
func (v FieldVector) Normalize() FieldVector {
mag := v.Magnitude()
return FieldVector{
X: v.X / mag,
Y: v.Y / mag,
}
}