在2D中将点旋转另一个点

Jam*_*mes 53 c# math angle rotation

我想知道如何在相对于另一个点旋转一个角度时计算出一个点的新坐标.

我有一个方块箭头,想要相对于箭头底部中间的一个角度旋转角度θ.

这是允许我在2个屏幕控件之间绘制多边形所必需的.我无法使用和旋转图像.

从我迄今为止所考虑的内容来看,进一步复杂化的是屏幕的起源位于左上角.

Sop*_*ert 133

如果您旋转点(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

  • 这取决于您用于trig函数的库.在C中,你需要传递弧度. (7认同)
  • 以弧度换算:value*Math.PI/180; (3认同)
  • 你在内存中也有3D版本吗?:) (2认同)

Meh*_*ari 8

如果您使用GDI +来执行此操作,则可以使用TransformGraphics对象的方法:

graphics.TranslateTransform(point of origin);
graphics.RotateTransform(rotation angle);
Run Code Online (Sandbox Code Playgroud)

然后绘制实际的东西.

  • 那不应该是原点的翻译吗? (3认同)