public Angle AngleBetweenPoints(Vector CenterPoint) { Vector endPointToCenter = new LineSegment(EndingPos, CenterPoint).TranlsateToVector(); Vector incomingVector = new LineSegment(EndingPos, StartingPos).TranlsateToVector(); if ((endPointToCenter.Magnitude() * incomingVector.Magnitude() == 0)) throw new DivideByZeroException(); double cosineOfTheAngle = (incomingVector * endPointToCenter) / (endPointToCenter.Magnitude() * incomingVector.Magnitude()); if (cosineOfTheAngle > 1 || cosineOfTheAngle < -1) throw new Exception("Out of range of acos"); Angle angleToReturn = new Angle(Math.Acos(cosineOfTheAngle)); return angleToReturn; }
internal Common.LineSegment GetReturnLine(LineSegment incoming) { if (overrideMagnitude == double.MinValue) return new LineSegment(incoming.EndingPos, ReturnAngle, incoming.Magnitude()); else return new LineSegment(incoming.EndingPos, ReturnAngle, overrideMagnitude); ; }