Big push to implement 10mp fluid simulations.

This commit is contained in:
2025-12-03 10:21:36 -05:00
parent ba2c798b2e
commit 719b386822
11 changed files with 1536 additions and 337 deletions

36
fluid/fieldvector.go Normal file
View 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,
}
}