Add new math functions

This commit is contained in:
Milan Nikolic 2023-11-09 09:22:41 +01:00
parent f953e65a3a
commit 3274fb58ea
No known key found for this signature in database
GPG key ID: 9229D0EAA3AA4E75

View file

@ -241,6 +241,38 @@ func Vector3Normalize(v Vector3) Vector3 {
return result
}
// Vector3Project - Calculate the projection of the vector v1 on to v2
func Vector3Project(v1, v2 Vector3) Vector3 {
result := Vector3{}
v1dv2 := (v1.X*v2.X + v1.Y*v2.Y + v1.Z*v2.Z)
v2dv2 := (v2.X*v2.X + v2.Y*v2.Y + v2.Z*v2.Z)
mag := v1dv2 / v2dv2
result.X = v2.X * mag
result.Y = v2.Y * mag
result.Z = v2.Z * mag
return result
}
// Vector3Reject - Calculate the rejection of the vector v1 on to v2
func Vector3Reject(v1, v2 Vector3) Vector3 {
result := Vector3{}
v1dv2 := (v1.X*v2.X + v1.Y*v2.Y + v1.Z*v2.Z)
v2dv2 := (v2.X*v2.X + v2.Y*v2.Y + v2.Z*v2.Z)
mag := v1dv2 / v2dv2
result.X = v1.X - (v2.X * mag)
result.Y = v1.Y - (v2.Y * mag)
result.Z = v1.Z - (v2.Z * mag)
return result
}
// Vector3Transform - Transforms a Vector3 by a given Matrix
func Vector3Transform(v Vector3, mat Matrix) Vector3 {
result := Vector3{}