(eye, center, up Vector)
| 72 | } |
| 73 | |
| 74 | func LookAt(eye, center, up Vector) Matrix { |
| 75 | up = up.Normalize() |
| 76 | f := center.Sub(eye).Normalize() |
| 77 | s := f.Cross(up).Normalize() |
| 78 | u := s.Cross(f).Normalize() |
| 79 | m := Matrix{ |
| 80 | s.X, u.X, -f.X, eye.X, |
| 81 | s.Y, u.Y, -f.Y, eye.Y, |
| 82 | s.Z, u.Z, -f.Z, eye.Z, |
| 83 | 0, 0, 0, 1, |
| 84 | } |
| 85 | return m.Inverse() |
| 86 | } |
| 87 | |
| 88 | func (m Matrix) Translate(v Vector) Matrix { |
| 89 | return Translate(v).Mul(m) |