std::vector<RayIntersection> FastArc::RayIntersects(gp_Pnt p) { std::vector<RayIntersection> ret; double y = p.Y() - C.Y(); if(fabs(y) > rad) return ret; double x1 = sqrt(rad*rad - y*y); double x2 = x1+C.X(); x1 = C.X()-x1; if(x1 < p.X()) ret.push_back(RayIntersection(GetU(x1,p.Y()),gp_Pnt(x1,p.Y(),0),false,false)); if(x2 < p.X()) ret.push_back(RayIntersection(GetU(x2,p.Y()),gp_Pnt(x2,p.Y(),0),false,false)); return ret; }
void Sarge::StrafeRight() { ApplyForce(50 * GetU()); }
void Sarge::StrafeLeft() { ApplyForce(-50 * GetU()); }