/// <summary> /// Takes 2 stations and cases and returns a list of appropraite endpoints for a /// line connection those stations, respecting jumps between databands. /// </summary> /// <param name="csFrom">Station and case of starting point.</param> /// <param name="csTo">Station and case of ending point.</param> /// <returns></returns> public static List <(SimplePoint2d, SimplePoint2d)> TranslateLine(CaseStation csFrom, CaseStation csTo) { double stationFrom = csFrom.Station; double stationTo = csTo.Station; List <(double, double)> modelXJumps = StationToXConverter.FindModelXsOfJumps(stationFrom, stationTo); double xFrom = csFrom.X; double xTo = csTo.X; List <(double, double)> modelXOfLineEndPoints = GetModelXOfLineEndPoints(xFrom, modelXJumps, xTo); double yFrom = csFrom.Y; double yTo = csTo.Y; List <(double, double)> modelYOfLineEndPoints = GetModelYOfLineEndPoints(yFrom, modelXOfLineEndPoints, yTo); var linePoints = new List <(SimplePoint2d, SimplePoint2d)>(); int linecount = modelXOfLineEndPoints.Count; for (int i = 0; i < linecount; i++) { double point1X = modelXOfLineEndPoints[i].Item1; double point1Y = modelYOfLineEndPoints[i].Item1; SimplePoint2d point1 = new SimplePoint2d(point1X, point1Y); double point2X = modelXOfLineEndPoints[i].Item2; double point2Y = modelYOfLineEndPoints[i].Item2; SimplePoint2d point2 = new SimplePoint2d(point2X, point2Y); linePoints.Add((point1, point2)); } return(linePoints); }
internal static Point3d ToPoint3d(this SimplePoint2d point) { return(new Point3d(point.X, point.Y, 0)); }
public ReferencePointData(SimplePoint2d point2d, AlignmentPoint alignmentPoint) => (this.Point2d, this.AlignmentPoint) = (point2d, alignmentPoint);