我一直在努力解决这个(显然很简单)的问题:
- 我有一个点(实际上是一个鼠标点,可以捕捉和移动二维几何中的顶点),它有一些坐标,比如说平面 z = 0 上的 x 和 y。
- 我希望能够通过将我的 2D 平面移动到特定的 Z 来缩放/取消缩放我的几何图形。
- 为了能够用鼠标拖动我的几何点(点 (x, y)),程序需要在 z = 0 处接收顶点坐标,即使平面在 z = -2 处也是如此。例如。
我搜索了很多关于投影并尝试遵循这些:
- http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html
- http://paulbourke.net/miscellaneous/lens/
但我无法得到我想要的...
这是我的代码(在 Obj-C 中),但它与语言无关:
double width = context.bounds.size.width;
double height = context.bounds.size.height;
double alpha = 2. * atan((height / 2.) / fabs(self.inputZ));
projectedX = self.inputX / (self.inputZ * tan(alpha / 2.));
projectedY = self.inputY / (self.inputZ * tan(alpha / 2.));
对于这个简单的问题,我将不胜感激!谢谢你。