nuclear@1: #include "sphvec.h" nuclear@1: #include "vector.h" nuclear@1: nuclear@1: /* theta: 0 <= theta <= 2pi, the angle around Y axis. nuclear@1: * phi: 0 <= phi <= pi, the angle from Y axis. nuclear@1: * r: radius. nuclear@1: */ nuclear@1: SphVector::SphVector(scalar_t theta, scalar_t phi, scalar_t r) { nuclear@1: this->theta = theta; nuclear@1: this->phi = phi; nuclear@1: this->r = r; nuclear@1: } nuclear@1: nuclear@1: /* Constructs a spherical coordinate vector from a cartesian vector */ nuclear@1: SphVector::SphVector(const Vector3 &cvec) { nuclear@1: *this = cvec; nuclear@1: } nuclear@1: nuclear@1: /* Assignment operator that converts cartesian to spherical coords */ nuclear@1: SphVector &SphVector::operator =(const Vector3 &cvec) { nuclear@1: r = cvec.length(); nuclear@1: //theta = atan2(cvec.y, cvec.x); nuclear@1: theta = atan2(cvec.z, cvec.x); nuclear@1: //phi = acos(cvec.z / r); nuclear@1: phi = acos(cvec.y / r); nuclear@1: return *this; nuclear@1: }