| 70 | } |
| 71 | |
| 72 | void Flector3D::GetTransformMatrices(Transform3D *M, Transform3D *Minv) const |
| 73 | { |
| 74 | float gx2 = g.x * g.x; |
| 75 | float gy2 = g.y * g.y; |
| 76 | float gz2 = g.z * g.z; |
| 77 | |
| 78 | float A00 = (gy2 + gz2) * 2.0F - 1.0F; |
| 79 | float A11 = (gz2 + gx2) * 2.0F - 1.0F; |
| 80 | float A22 = (gx2 + gy2) * 2.0F - 1.0F; |
| 81 | float A01 = g.x * g.y * -2.0F; |
| 82 | float A02 = g.z * g.x * -2.0F; |
| 83 | float A12 = g.y * g.z * -2.0F; |
| 84 | float A03 = p.x * p.w - g.x * g.w; |
| 85 | float A13 = p.y * p.w - g.y * g.w; |
| 86 | float A23 = p.z * p.w - g.z * g.w; |
| 87 | |
| 88 | float B01 = g.z * p.w * 2.0F; |
| 89 | float B20 = g.y * p.w * 2.0F; |
| 90 | float B12 = g.x * p.w * 2.0F; |
| 91 | float B03 = g.y * p.z - g.z * p.y; |
| 92 | float B13 = g.z * p.x - g.x * p.z; |
| 93 | float B23 = g.x * p.y - g.y * p.x; |
| 94 | |
| 95 | M->Set( A00, A01 + B01, A02 - B20, (A03 + B03) * 2.0F, |
| 96 | A01 - B01, A11, A12 + B12, (A13 + B13) * 2.0F, |
| 97 | A02 + B20, A12 - B12, A22, (A23 + B23) * 2.0F); |
| 98 | |
| 99 | Minv->Set( A00, A01 - B01, A02 + B20, (A03 - B03) * 2.0F, |
| 100 | A01 + B01, A11, A12 - B12, (A13 - B13) * 2.0F, |
| 101 | A02 - B20, A12 + B12, A22, (A23 - B23) * 2.0F); |
| 102 | } |
| 103 | |
| 104 | Flector3D& Flector3D::SetTransformMatrix(const Transform3D& M) |
| 105 | { |