Big push to implement 10mp fluid simulations.
This commit is contained in:
36
fluid/fieldvector.go
Normal file
36
fluid/fieldvector.go
Normal file
@@ -0,0 +1,36 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user