Manifold::GeodesicPtr Compound::PointOfReference::getFinalGeodesic(Vector3d vector) { /*Manifold* space = pointOfReference->getPosition()->getSpace(); return space->getGeodesic(pointOfReference, vector);*/ //std::cout << "getFinalGeodesic(vector)" << std::endl; assert(vector == vector); //This will need to be made more sophisticated when Compound is made to support more than one space. Manifold* space = pointOfReference->getPosition()->getSpace(); Manifold::GeodesicPtr next = space->getGeodesic(pointOfReference, vector); //Manifold::GeodesicPtr original = next; //Vector3d firstVector = next->getEndPoint()->getVector(); Manifold::GeodesicPtr current; do { current = next; space = current->getSpace(); next = space->nextPiece(current); /*if(next) { std::cout << "next" << std::endl; }*/ } while(next); //assert((current->getEndPoint()->getVector() - firstVector).squaredNorm() < EPSILON*EPSILON); //For portals leading to themselves. //std::cout << "current->getEndPoint()->getVector():\n" << current->getEndPoint()->getVector() << std::endl; //std::cout << "firstVector:\n" << firstVector << std::endl; //return original; assert(current->getEndPoint()->isInManifold()); return current; }