| 159 | |
| 160 | |
| 161 | Motor3D Terathon::operator *(const Flector3D& a, const Flector3D& b) |
| 162 | { |
| 163 | return (Motor3D(a.g.z * b.g.y - a.g.y * b.g.z - a.g.x * b.p.w - a.p.w * b.g.x, |
| 164 | a.g.x * b.g.z - a.g.z * b.g.x - a.g.y * b.p.w - a.p.w * b.g.y, |
| 165 | a.g.y * b.g.x - a.g.x * b.g.y - a.g.z * b.p.w - a.p.w * b.g.z, |
| 166 | a.g.x * b.g.x + a.g.y * b.g.y + a.g.z * b.g.z - a.p.w * b.p.w, |
| 167 | a.p.z * b.g.y - a.p.y * b.g.z + a.g.y * b.p.z - a.g.z * b.p.y + a.g.x * b.g.w - a.g.w * b.g.x + a.p.w * b.p.x - a.p.x * b.p.w, |
| 168 | a.p.x * b.g.z - a.p.z * b.g.x + a.g.z * b.p.x - a.g.x * b.p.z + a.g.y * b.g.w - a.g.w * b.g.y + a.p.w * b.p.y - a.p.y * b.p.w, |
| 169 | a.p.y * b.g.x - a.p.x * b.g.y + a.g.x * b.p.y - a.g.y * b.p.x + a.g.z * b.g.w - a.g.w * b.g.z + a.p.w * b.p.z - a.p.z * b.p.w, |
| 170 | a.p.x * b.g.x + a.p.y * b.g.y + a.p.z * b.g.z + a.p.w * b.g.w - a.g.x * b.p.x - a.g.y * b.p.y - a.g.z * b.p.z - a.g.w * b.p.w)); |
| 171 | } |
| 172 | |
| 173 | Flector3D Terathon::operator *(const Flector3D& a, const Motor3D& b) |
| 174 | { |