static public AngleAndDistance GetAngleAndDistance(PointF p1, PointF p2) { AngleAndDistance angleAndDistance = new AngleAndDistance(); angleAndDistance.Distance = HelperFunctions.GetDistanceBetweenTwoPoints(p1, p2); angleAndDistance.AngleInDegrees = HelperFunctions.GetAngleBetweenTwoPoints(p1, p2); return(angleAndDistance); }
static public PointF[] RotatePolygon(PointF[] pointArray, double rotationAngle, PointF origin) { List <PointF> returnPoints = new List <PointF>(); foreach (PointF point in pointArray) { PointF relativePoint = new PointF(point.X - origin.X, point.Y - origin.Y); AngleAndDistance angleAndDistance = HelperFunctions.GetAngleAndDistance(origin, point); PointF rotatedRelativePoint = HelperFunctions.ConvertAngleAndDistanceToXY (angleAndDistance.AngleInDegrees + rotationAngle, angleAndDistance.Distance); returnPoints.Add(new PointF(rotatedRelativePoint.X + origin.X, rotatedRelativePoint.Y + origin.Y)); } return(returnPoints.ToArray()); }