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