PHP - 数学 - 旋转后的新坐标

时间:2011-12-21 07:53:08

标签: php math gd trigonometry

我已旋转图像,需要将较小图像的新坐标放置在旋转图像上。

假设未旋转的大图像上的小图像坐标为:

$x0 = 100;
$x1 = 120;
$y0 = 100;
$y2 = 200;

在大图像上执行顺时针旋转:

$rotation = -3.5;

我现在如何获得更新的坐标以将小图像放到较大的(现在旋转的)图像上?

(免责声明:这个问题具体是如何在旋转图像后如何计算PHP中的新坐标,所以它不是其他“旋转后的坐标”问题的重复,这不涉及如何解决这个问题PHP代码中的问题,0,0位于左上角并使用PHP函数。)

1 个答案:

答案 0 :(得分:1)

您需要知道图像旋转的原点。然后,您可以通过执行以下步骤将旧坐标系中的任何点(您的大型未旋转图像)转换为新的坐标系(您的大旋转图像):

  • Substract来自小图像坐标(smallIMageX - originX,smallImageY - originY)
  • 以与使用大图像相同的方式旋转小图像
  • 再次在小图像坐标上添加原点(smallRotatedImageX + originX,smallRotatedImageY + originY)

然后将小图像旋转并放置在之前的位置。

我之前在HTML Canvas中遇到过这个问题。请参阅此问题的第一个答案:Rotating a point about another point (2D)

那个人详细介绍了如何做到这一点的方法。