func RotateAngle(angleX, angleY, angleZ float64) *Matrix4 { m1 := Rotate(angleZ, 0, 0, 1).Matrix m2 := Rotate(angleY, 0, 1, 0).Matrix m3 := Rotate(angleX, 1, 0, 0).Matrix return &Matrix4{matrix.MultiMM(m1, m2, m3)} }
// Row vector multiply by matrix, result is a new row vector func (v *Vector4) MultiM(m *Matrix4) *Vector4 { m2 := matrix.NewMatrix(1, 4) m2.InitRow(1, v.Vector) return &Vector4{matrix.MultiMM(m2, m.Matrix).Row(1)} }
func (m *Matrix4) MultiM(m2 *Matrix4) *Matrix4 { return &Matrix4{matrix.MultiMM(m.Matrix, m2.Matrix)} }
// Matrix multiply by column vector, result is a new column vector func (m *Matrix4) MultiV(v *Vector4) *Vector4 { m2 := matrix.NewMatrix(4, 1) // column vector m2.Init(v.Vector) return &Vector4{matrix.MultiMM(m.Matrix, m2).Column(1)} }