Используя простую математику, мы можем преобразовать между углами (в градусах) и точками координат XY. Полезно при работе с элементами круга.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/// <summary> /// Вычисляет точку, находящуюся под углом от начала координат (0 справа) /// </summary> private PointF DegreesToXY(float degrees, float radius, Point origin) { PointF xy = new PointF(); double radians = degrees * Math.PI / 180.0; xy.X = (float)Math.Cos(radians) * radius + origin.X; xy.Y = (float)Math.Sin(-radians) * radius + origin.Y; return xy; } /// <summary> /// Вычисляет угол, под которым точка находится к началу координат (0 справа) /// </summary> private float XYToDegrees(Point xy, Point origin) { int deltaX = origin.X - xy.X; int deltaY = origin.Y - xy.Y; double radAngle = Math.Atan2(deltaY, deltaX); double degreeAngle = radAngle * 180.0 / Math.PI; return (float)(180.0 - degreeAngle); } |