Введение
При работе с графикой, игровыми элементами или визуализацией часто требуется преобразовывать координаты точек в углы и обратно. Это полезно, например, для расположения объектов по кругу или вычисления направления.
Вычисление координат точки по углу и радиусу
Метод DegreesToXY
принимает угол в градусах, радиус и начальную точку (origin). Он возвращает координаты точки, находящейся под этим углом на заданном расстоянии от origin.
/// <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); }
- Используем преобразование градусов в радианы (
degrees * Math.PI / 180
). - Координаты рассчитываются с помощью косинуса и синуса.
- Угол 0 градусов соответствует направлению вправо от origin.
Вычисление угла по координатам точки
Метод XYToDegrees
вычисляет угол в градусах, под которым находится точка относительно начала координат.
- Используется
Math.Atan2
для получения угла в радианах. - Преобразуем радианы в градусы.
- Корректируем угол, чтобы 0 градусов был справа, и направление шло по часовой стрелке.
Заключение
Эти простые методы на C# позволяют легко преобразовывать между угловыми и координатными представлениями точек. Они полезны для позиционирования объектов по кругу, построения диаграмм или игр.