Поворот точки на другую точку в 2D


Я хочу знать, как выработать новые координаты точки при повороте на угол относительно другой точки.

У меня есть блочная стрелка и я хочу повернуть ее на угол тета относительно точки в середине основания стрелки.

Это необходимо, чтобы позволить мне нарисовать многоугольник между 2 экранные элементы управления. Я не могу использовать и вращать изображение.

из того, что я рассмотрел до сих пор, что еще больше усложняет дело в том, что происхождение на экране в верхнем левом углу.

3 52

3 ответа:

если вы вращаете точку (px, py) по точку (ox, oy) на угол theta вы получите:

p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox
p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy

Если вы используете GDI+ для этого, вы можете использовать Transform методы

Если у вас System.Windows.Media пространство имен доступно, то вы можете использовать встроенные преобразования:

    using System.Windows.Media;

    var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y};
    var transformedPoint = transform.Transform(point);