private IVector GetClosingVector(List <IVector3D> TraverseCourses, IPoint StartPoint, IPoint EndPoint, out double SUMofLengths) { IVector SumVec = null; SUMofLengths = 0; for (int i = 0; i < TraverseCourses.Count - 1; i++) { if (i == 0) { SUMofLengths = TraverseCourses[0].Magnitude + TraverseCourses[1].Magnitude; SumVec = TraverseCourses[0].AddVector(TraverseCourses[1]); } else { IVector3D SumVec3D = SumVec as IVector3D; SUMofLengths += TraverseCourses[i + 1].Magnitude; SumVec = SumVec3D.AddVector(TraverseCourses[i + 1]); } } double dCalcedEndX = StartPoint.X + SumVec.ComponentByIndex[0]; double dCalcedEndY = StartPoint.Y + SumVec.ComponentByIndex[1]; IVector3D CloseVector3D = new Vector3DClass(); CloseVector3D.SetComponents(dCalcedEndX - EndPoint.X, dCalcedEndY - EndPoint.Y, 0); IVector CloseVector = CloseVector3D as IVector; return(CloseVector); }