/// <summary> /// Projection onto the vector as distance along the line from the start of the vector. /// Result is stored as an CInterval Min and Max, /// </summary> /// <param name="Vector">Vector to project this onto.</param> /// <param name="Interval">Interval to recieve the result.</param> public override void Project(C2DVector Vector, CInterval Interval) { // Create a line that goes through the circle from edge to edge and with the same vector. C2DLine Line = new C2DLine(_Centre, Vector); Line.vector.SetLength(Radius * 2); C2DVector V2 = new C2DVector(Vector); V2.Multiply(-0.5); Line.Move(V2); // Now just project the line onto the interval. Line.Project(Vector, Interval); }
/// <summary> /// Projection onto the line as distance along the line from the start of the line. /// Result is stored as an CInterval Min and Max, /// </summary> /// <param name="Line">Line to project this onto.</param> /// <param name="Interval">Interval to recieve the result.</param> public override void Project(C2DLine Line, CInterval Interval) { // Create a line that goes through the circle from edge to edge and with the same vector as the // Line to project on. var LineCopy = new C2DLine(_Centre, Line.vector); LineCopy.vector.SetLength(Radius * 2); var V2 = new C2DVector(LineCopy.vector); V2.Multiply(-0.5); LineCopy.Move(V2); // Now just project the line onto the interval. LineCopy.Project(Line, Interval); }
/// <summary> /// Projection onto the vector as distance along the line from the start of the vector. /// Result is stored as an CInterval Min and Max, /// </summary> /// <param name="Vector">Vector to project this onto.</param> /// <param name="Interval">Interval to recieve the result.</param> public override void Project(C2DVector Vector, CInterval Interval) { // Create a line that goes through the circle from edge to edge and with the same vector. C2DLine Line = new C2DLine (_Centre, Vector); Line.vector.SetLength( Radius * 2 ); C2DVector V2 = new C2DVector(Vector); V2.Multiply(-0.5); Line.Move(V2); // Now just project the line onto the interval. Line.Project(Vector, Interval); }