protected CentreLineOffset(double distance, SidesOfCentre side, OffsetTypes type) { DistanceFromCentre = distance; Side = side; OffsetType = type; Curves = new PersistentObjectIdCollection(); }
private static bool IsOffSetValidForSide(this Curve curve, Curve offSet, SidesOfCentre side) { if (offSet == null) { return(false); } var start = new Point2d(curve.StartPoint.X, curve.StartPoint.Y); var offSetVector = start.GetVectorTo(new Point2d(offSet.StartPoint.X, offSet.StartPoint.Y)); return(Math.Abs(curve.AngleFromCurveToForSide(side) - offSetVector.Angle) < RadiansHelper.ANGLE_TOLERANCE); }
public static double AngleForSide(double angle, SidesOfCentre side) { switch (side) { case SidesOfCentre.Right: return(AngleForRightSide(angle)); case SidesOfCentre.Left: return(AngleForLeftSide(angle)); default: throw new ArgumentOutOfRangeException(nameof(side), side, null); } }
public static Curve CreateOffset(this Curve curve, SidesOfCentre side, double dist) { Curve offset; switch (side) { case SidesOfCentre.Left: offset = curve.CreateLeftOffset(dist); break; case SidesOfCentre.Right: offset = curve.CreateRightOffset(dist); break; default: throw new ArgumentOutOfRangeException(nameof(side), side, null); } return(offset); }
public static double AngleFromCurveToForSide(this Curve curve, SidesOfCentre side) { double curveAngle; switch (curve) { case Line line: curveAngle = line.Angle; break; case Arc arc: var startPoint = new Point2d(arc.StartPoint.X, arc.StartPoint.Y); var arcCentre = new Point2d(arc.Center.X, arc.Center.Y); var startVector = arcCentre.GetVectorTo(startPoint); curveAngle = arc.Clockwise() ? startVector.Angle - RadiansHelper.DEGREES_90 : startVector.Angle + RadiansHelper.DEGREES_90; break; default: throw new ArgumentOutOfRangeException(nameof(curve), curve, null); } return(RadiansHelper.AngleForSide(curveAngle, side)); }
protected CarriageWay(SidesOfCentre side) : base(Constants.DEFAULT_CARRIAGE_WAY, side, OffsetTypes.CarriageWay) { Intersections = new List <OffsetIntersect>(); Ignore = false; }
protected Pavement(double distance, SidesOfCentre side) : base(distance, side, OffsetTypes.Pavement) { }