func (q *Quad) Apply(t glm.Mat4d) Quad { return Quad{ q.Center, //t.Mul4x1(q.Center), t.Mul4x1(q.Normal), t.Mul4x1(q.PlaneV), q.Scale, //t.Mul4x1(q.Scale), } }
func (p *Player) Transform(m glm.Mat4d) { p.Position = m.Mul4x1(p.Position) p.Velocity = m.Mul4x1(p.Velocity) r := gtk.RotationComponent(m) // fmt.Println("r",r) q := gtk.Quaternion(r) // fmt.Println("q", q) p.Orientation = q.Mul(p.Orientation) p.OrientationH = q.Mul(p.OrientationH) }
func RotationComponent(m glm.Mat4d) glm.Mat3d { m2 := glm.Ident3d() j := 0 for i := 0; i < 3; i++ { v := glm.Vec4d{} v[i] = 1 vt := m.Mul4x1(v) for k := 0; k < 3; k++ { m2[j] = vt[k] j++ } } return m2 }