Files
aego/core/mathx/look.go

19 lines
418 B
Go

package mathx
func QuatYawPitch(yaw, pitch float32) Quat {
return QuatAxisAngle(Vec3{Y: 1}, yaw).Mul(QuatAxisAngle(Vec3{X: 1}, pitch))
}
func YawPitchOf(dir Vec3) (yaw, pitch float32) {
h := Sqrt(dir.X*dir.X + dir.Z*dir.Z)
return Atan2(-dir.X, -dir.Z), Atan2(dir.Y, h)
}
func QuatLookDir(dir Vec3) Quat {
if dir.LenSq() < 1e-12 {
return QuatIdentity()
}
y, p := YawPitchOf(dir)
return QuatYawPitch(y, p)
}