#include "header.h" //There are definitions of some class constants and some class functions. const mtrx3 mtrx3::X2X = mtrx3(spcpos( 1.0, 0.0, 0.0), spcpos(0.0, 1.0, 0.0), spcpos(0.0, 0.0, 1.0)); const mtrx3 mtrx3::N2X = mtrx3(spcpos(0.0, 0.0, -1.0), spcpos(0.0, 1.0, 0.0), spcpos( 1.0, 0.0, 0.0)); const mtrx3 mtrx3::S2X = mtrx3(spcpos(0.0, 0.0, 1.0), spcpos(0.0, 1.0, 0.0), spcpos(-1.0, 0.0, 0.0)); const mtrx3 mtrx3::W2X = mtrx3(spcpos(0.0, 1.0, 0.0), spcpos(-1.0, 0.0, 0.0), spcpos(0.0, 0.0, 1.0)); const mtrx3 mtrx3::E2X = mtrx3(spcpos(0.0, -1.0, 0.0), spcpos( 1.0, 0.0, 0.0), spcpos(0.0, 0.0, 1.0)); const mtrx3 mtrx3::A2X = mtrx3(spcpos(-1.0, 0.0, 0.0), spcpos(0.0, 1.0, 0.0), spcpos(0.0, 0.0, -1.0)); const mtrx3 mtrx3::ATX = mtrx3(spcpos(-1.0, 0.0, 0.0), spcpos(0.0, 0.0, 1.0), spcpos(0.0, 1.0, 0.0)); const mtrx3 mtrx3::R045 = mtrx3(spcpos(1.0, 0.0, 0.0), spcpos(0.0, sqrt(0.5), -sqrt(0.5)), spcpos(0.0, sqrt(0.5), sqrt(0.5))); const mtrx3 mtrx3::R090 = mtrx3(spcpos(1.0, 0.0, 0.0), spcpos(0.0, 0.0, -1.0), spcpos(0.0, 1.0, 0.0)); const mtrx3 mtrx3::R270 = mtrx3(spcpos(1.0, 0.0, 0.0), spcpos(0.0, 0.0, 1.0), spcpos(0.0, -1.0, 0.0)); const mtrx3 mtrx3::R315 = mtrx3(spcpos(1.0, 0.0, 0.0), spcpos(0.0, sqrt(0.5), sqrt(0.5)), spcpos(0.0, -sqrt(0.5), sqrt(0.5))); plnpos spcpos::azeqdstX(double f) const { double r = sqrt(y * y + z * z); if (r == 0) { return plnpos(0, 0); } else { return plnpos(y / f, z) * (atan2(r, x) / r); } } spcpos plnpos::RazeqdstX(double f) const { double w = x * f, r = sqrt(w * w + y * y), c = cos(r), s = sin(r); if (r == 0) { return spcpos(1.0, 0.0, 0.0); } else { return spcpos(c, w * s / r, y * s / r); } }