我想知道如何计算相对于另一个点旋转角度的点的新坐标。以2D中的另一个点旋转点
我有一个块箭头,并希望通过相对于箭头底部中间点的角度θ旋转它。
这是允许我在2个屏幕控件之间绘制多边形所必需的。我无法使用和旋转图像。
从我迄今为止所考虑的问题来看,更进一步的问题是屏幕的原点位于左上角。
我想知道如何计算相对于另一个点旋转角度的点的新坐标。以2D中的另一个点旋转点
我有一个块箭头,并希望通过相对于箭头底部中间点的角度θ旋转它。
这是允许我在2个屏幕控件之间绘制多边形所必需的。我无法使用和旋转图像。
从我迄今为止所考虑的问题来看,更进一步的问题是屏幕的原点位于左上角。
如果通过旋转角点(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 +要做到这一点,你可以使用Graphics
对象的Transform
方法:
graphics.TranslateTransform(point of origin);
graphics.RotateTransform(rotation angle);
然后绘制实际的东西。
这不应该是原点翻译吗? – Spook 2012-10-24 11:42:30
如果有可用的System.Windows.Media
命名空间,那么你可以使用内置的转换:
using System.Windows.Media;
var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y};
var transformedPoint = transform.Transform(point);
你在内存中是否还有3D版本? :) – 2009-04-24 16:08:29