与点一起旋转点的算法(相对)

时间:2011-01-18 13:26:38

标签: algorithm bitmap rotation

我们有一个应用程序,我们设计一个标签,然后从设计中创建一个发送到打印机的图像。在通过TCP / IP发送之前,映像将变为字节流。

简短的故事是我们有一个旋转设置,可以自动计算标签上不同元素的位置。它运作不正常。

我想知道是否有一种简单的方法来计算元素相对于包含矩形(标签大小)的高度/宽度的位置。它还需要考虑这是一个位图,所以左上角是(0,0)。这让我感到困惑,因为我发现的大多数旋转算法都是在常规的X / Y轴上运行。

所以,假设我有一个标签500 x 300(宽x高),点(文本框)为100,100(左上)。我想将此旋转90度,使标签现在为300 x 500,文本框为200 x 100(右上角)。注意,矩形计算会自行处理,我只需要找到相对于新边的点。

我发现180度(宽度 - x,高度 - y),但很难找到90(和270)的算法

这里可能没有火箭手术,但我已经盯着这个问题。

2 个答案:

答案 0 :(得分:1)

简单的观察可以表明,对于顺时针pi / 2旋转,公式为(hight - y, x)。您可以从一般的pi / 2旋转公式(-y, x)到达它。 (如果你认为'坐标原点'也发生了变化)

获得270度的公式非常相似。

答案 1 :(得分:0)

如果要旋转标签逆时针旋转90度,则标签的每个点(x,y)“映射”到(-y,x)。在270度旋转(或顺时针90度,相同)的情况下(x,y)变为(y,-x)。希望这会有所帮助。