我意识到这可能更像是一个数学问题 .
要为我的矩形绘制线条,我需要解决它们的角落 . 我在(x,y)处有一个矩形中心,带有定义的宽度和高度 .
要在顶部的非旋转矩形上找到蓝点(角度= 0),它是
UL = (x-Width/2),(y+height/2)
UR = (x+Width/2),(y+height/2)
LR = (x+Width/2),(y-height/2)
LL = (x-Width/2),(y-height/2)
如果角度不为0,我如何找到点?
提前致谢 .
更新:虽然我的图片中有(0,0)作为中心点,但中心点很可能不在该位置 .
6 回答
首先将中心点转换为0,0
X'= X-x
Y'= Y-y
然后旋转A角
X''=(X-x)* cos A - (Y-y)* sin A.
Y'=(Y-y)* cos A(X-x)* sin A.
再次将中心点转换回x,y
X''=(X-x)* cos A - (Y-y)* sin A x
Y''=(Y-y)* cos A(X-x)* sin A y
因此,通过以下变换计算(X,Y)的所有4个点
X''=(X-x)* cos A - (Y-y)* sin A x
Y''=(Y-y)* cos A(X-x)* sin A y
其中x,y是矩形的中心点,X是角点当角度为0时,即使角点也没有正确定义,正如我在评论中给出的那样 .
替换后你会得到
我认为这适合您的解决方案 .
如果'theta'是逆时针旋转角度,那么旋转矩阵是:
即
如果旋转点不在原点,则从原始坐标中减去旋转中心,执行如上所示的旋转,然后再次将旋转中心添加回来 .
在http://en.wikipedia.org/wiki/Transformation_matrix有其他转换的例子
Rotation matrix(这已成为FAQ)
见2D Rotation .
x = r cos q
y = r sin q
x'= r cos(q f)= r cos q cos f - r sin q sin f
y'= r sin(q w)= r sin q cos f r cos q sin f
因此:
x'= x cos f - y sin f
y'= y cos f x sin f
最简单的方法之一是在旋转之前获取点的位置,然后应用坐标变换 . 由于它以(0,0)为中心,这只是一个使用的情况:
x'= x cos(theta) - y sin(theta)
y'= y cos(theta)x sin(theta)
用这个......我成功了......