Rotate a point by another point in 2D

前端 未结 3 1498
天命终不由人
天命终不由人 2020-11-29 01:13

I want to know how to work out the new co-ordinates for a point when rotated by an angle relative to another point.

I have a block arrow and want to rotate it by an

相关标签:
3条回答
  • 2020-11-29 01:31

    If you are using GDI+ to do that, you can use Transform methods of the Graphics object:

    graphics.TranslateTransform(point of origin);
    graphics.RotateTransform(rotation angle);
    

    Then draw the actual stuff.

    0 讨论(0)
  • 2020-11-29 01:43

    If you have the System.Windows.Media namespace available, then you can use the built in transformations:

        using System.Windows.Media;
    
        var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y};
        var transformedPoint = transform.Transform(point);
    
    0 讨论(0)
  • 2020-11-29 01:52

    If you rotate point (px, py) around point (ox, oy) by angle theta you'll get:

    p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox
    p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy
    
    0 讨论(0)
提交回复
热议问题