Zend PDF:旋转后计算坐标

Zend PDF:旋转后计算坐标,pdf,zend-framework,rotation,coordinates,draw,Pdf,Zend Framework,Rotation,Coordinates,Draw,没有太多的细节——我从一个网络工具中获取参数(x1,x2,y1,y2,a,b,α),我需要使用Zend_PDF库生成一个PDF文档,该库包含绿色图像,在精确坐标上正确旋转和定位 现在,让我困惑的是Zend不允许元素旋转,而是旋转纸张。所以,我假设旋转需要这样做 $page->rotate($x1+($x2-$x1)/2,$y1+($y2-$y1)/2,-deg2rad($rotation)) 因为我们希望图像的中心是旋转点,我们以相反的方向旋转它,这样得到的图像将得到适当的旋转 我遇到麻烦的棘

没有太多的细节——我从一个网络工具中获取参数(x1,x2,y1,y2,a,b,α),我需要使用Zend_PDF库生成一个PDF文档,该库包含绿色图像,在精确坐标上正确旋转和定位

现在,让我困惑的是Zend不允许元素旋转,而是旋转纸张。所以,我假设旋转需要这样做

$page->rotate($x1+($x2-$x1)/2,$y1+($y2-$y1)/2,-deg2rad($rotation))

因为我们希望图像的中心是旋转点,我们以相反的方向旋转它,这样得到的图像将得到适当的旋转

我遇到麻烦的棘手部分是画它。用简单的电话

$page->drawImage($image,$x1,$y1,$x2,$y2)


我得到的结果显示在图表上-结果图像也需要转换,因为(x1,y1)和(x2,y2)不再是精确的坐标,但我不确定如何计算它们?有什么想法吗?

OP在一篇评论中确认,他在他的
旋转
绘制图像
调用中对(x1y1)和(X2y2)使用了相同的值。不过,从他的草图中可以明显看出,后一个调用的坐标必须不同

幸运的是,从绿色矩形在(x1y1)到(X2y2)的矩形中的内接方式,我们知道它与该矩形具有相同的中心点。此外,我们还有绿色矩形的ab

因此,必须将
drawImage
参数更改为:

$page->drawImage($image, $x1 + ($x2 - $x1) / 2 - $a / 2
                       , $y1 + ($y2 - $y1) / 2 - $b / 2
                       , $x1 + ($x2 - $x1) / 2 + $a / 2
                       , $y1 + ($y2 - $y1) / 2 + $b / 2);

rotate
drawImage
调用中,(x1,y1)和(x2,y2)坐标是否相同?或者您的图像只是绿色矩形,在这种情况下,
drawImage
的值应该完全不同……是的,它们是相同的。$image是一个绿色矩形,这也是事实。我知道drawImage调用得到了错误的坐标,但我不确定如何计算正确的坐标。伙计,谢谢你的回复!这个解决方案几乎是完美的——X坐标是完美的,但Y仍然需要向下平移一点(在常规的不旋转坐标系中)。你可能知道为什么以及如何翻译它吗?简单地改变drawImage中的y1和y2会使生成的图像倾斜,因为旋转系统中的Y轴是原始系统中X和Y的平移。如果Y仍然需要平移一点进行分析,请共享输入值和生成的PDF?已经说过@Relja只是简单地更改drawImage中的y1和y2会使生成的图像倾斜-更改rotate和drawImage的y值。@Relja现在是否按预期工作,或者您仍然需要帮助?