Beispiel #1
0
Datei: quat.go Projekt: void6/lm
func QuatAxisRotation(axis Vec3, angle float32) Quat {
	var d = 1 / axis.Len()
	halfAngle := angle / 2.0
	s := math32.Sin(halfAngle)
	c := math32.Cos(halfAngle)
	return Quat{s * axis[0] * d, s * axis[1] * d, s * axis[2] * d, c}
}
Beispiel #2
0
func Mat3x3Rotate(radians float32) Mat3x3 {
	c := math32.Cos(radians)
	s := math32.Sin(radians)
	return Mat3x3{
		s, -c, 0,
		c, s, 0,
		0, 0, 1}
}
Beispiel #3
0
func Mat4x4Rotate(axis Vec3, radians float32) Mat4x4 {
	x, y, z := axis.Norm().XYZ()
	c := math32.Cos(radians)
	s := math32.Sin(radians)

	return Mat4x4{
		x*x*(1-c) + c, y*x*(1-c) + z*s, x*z*(1-c) - y*s, 0,
		x*y*(1-c) - z*s, y*y*(1-c) + c, y*z*(1-c) + x*s, 0,
		x*z*(1-c) + y*s, y*z*(1-c) - x*s, z*z*(1-c) + c, 0,
		0, 0, 0, 1}
}