/// <summary> /// Returns the projection of this onto the vector provided, given as the interval on /// (or off) the vector. Interval given as distance from the start of the vector. /// The vector is equivalent to a line from (0, 0). /// </summary> /// <param name="Vector">The projection vector.</param> /// <param name="Interval">The interval to recieve the result.</param> public override void Project(C2DVector Vector, CInterval Interval) { C2DArc ThisCopy = new C2DArc(this); C2DVector VecCopy = new C2DVector(Vector); double dAng = VecCopy.AngleFromNorth(); VecCopy.TurnLeft(dAng); ThisCopy.RotateToRight(-dAng, new C2DPoint(0, 0)); C2DRect rect = new C2DRect(); ThisCopy.GetBoundingRect(rect); Interval.dMax = rect.GetTop() - VecCopy.j; Interval.dMin = Interval.dMax; Interval.ExpandToInclude(rect.GetBottom() - VecCopy.j); }
/// <summary> /// Returns the projection of this onto the line provided, given as the interval on /// (or off) the line. Interval given as distance from the start of the line. /// </summary> /// <param name="TestLine">The projection line.</param> /// <param name="Interval">The interval to recieve the result.</param> public override void Project(C2DLine TestLine, CInterval Interval) { C2DArc ThisCopy = new C2DArc(this); C2DLine LineCopy = new C2DLine(TestLine); double dAng = LineCopy.vector.AngleFromNorth(); LineCopy.vector.TurnLeft(dAng); ThisCopy.RotateToRight(-dAng, LineCopy.point); C2DRect rect = new C2DRect(); ThisCopy.GetBoundingRect(rect); Interval.dMax = rect.GetTop() - LineCopy.point.y; Interval.dMin = Interval.dMax; Interval.ExpandToInclude(rect.GetBottom() - LineCopy.point.y); }
/// <summary> /// Returns the projection of this onto the vector provided, given as the interval on /// (or off) the vector. Interval given as distance from the start of the vector. /// The vector is equivalent to a line from (0, 0). /// </summary> /// <param name="Vector">The projection vector.</param> /// <param name="Interval">The interval to recieve the result.</param> public override void Project(C2DVector Vector, CInterval Interval) { C2DArc ThisCopy = new C2DArc(this); C2DVector VecCopy = new C2DVector(Vector); double dAng = VecCopy.AngleFromNorth(); VecCopy.TurnLeft(dAng); ThisCopy.RotateToRight( -dAng, new C2DPoint(0, 0)); C2DRect rect = new C2DRect(); ThisCopy.GetBoundingRect( rect); Interval.dMax = rect.GetTop() - VecCopy.j; Interval.dMin = Interval.dMax; Interval.ExpandToInclude( rect.GetBottom() - VecCopy.j ); }
/// <summary> /// Returns the projection of this onto the line provided, given as the interval on /// (or off) the line. Interval given as distance from the start of the line. /// </summary> /// <param name="TestLine">The projection line.</param> /// <param name="Interval">The interval to recieve the result.</param> public override void Project(C2DLine TestLine, CInterval Interval) { C2DArc ThisCopy = new C2DArc(this); C2DLine LineCopy = new C2DLine(TestLine); double dAng = LineCopy.vector.AngleFromNorth(); LineCopy.vector.TurnLeft(dAng); ThisCopy.RotateToRight( -dAng, LineCopy.point); C2DRect rect = new C2DRect(); ThisCopy.GetBoundingRect( rect); Interval.dMax = rect.GetTop() - LineCopy.point.y; Interval.dMin = Interval.dMax; Interval.ExpandToInclude(rect.GetBottom() - LineCopy.point.y); }