| 58 | // ============================================== |
| 59 | |
| 60 | Dipole2D Terathon::Partner(const Dipole2D& d) |
| 61 | { |
| 62 | float gzpz = d.g.z * d.p.z; |
| 63 | float gxy2 = -d.g.x * d.g.x - d.g.y * d.g.y; |
| 64 | float f = d.p.z * d.p.z - d.g.z * d.g.z + d.g.y * d.p.x - d.g.x * d.p.y; |
| 65 | |
| 66 | return (Dipole2D(gxy2 * d.g.x, |
| 67 | gxy2 * d.g.y, |
| 68 | gxy2 * d.g.z, |
| 69 | |
| 70 | gzpz * d.g.x + f * d.g.y, |
| 71 | gzpz * d.g.y - f * d.g.x, |
| 72 | gxy2 * d.p.z)); |
| 73 | } |
| 74 | |
| 75 | // ============================================== |
| 76 | // Join |