1

我一直在努力解决这个(显然很简单)的问题:

  • 我有一个点(实际上是一个鼠标点,可以捕捉和移动二维几何中的顶点),它有一些坐标,比如说平面 z = 0 上的 x 和 y。
  • 我希望能够通过将我的 2D 平面移动到特定的 Z 来缩放/取消缩放我的几何图形。
  • 为了能够用鼠标拖动我的几何点(点 (x, y)),程序需要在 z = 0 处接收顶点坐标,即使平面在 z = -2 处也是如此。例如。

我搜索了很多关于投影并尝试遵循这些:

但我无法得到我想要的...

这是我的代码(在 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.));

对于这个简单的问题,我将不胜感激!谢谢你。

4

1 回答 1

1

看看我在这里的回答。有一个移植的 glu 函数可以将点投影到屏幕坐标。如果您不使用 GLK 函数,您可以将其编辑为您正在使用的任何内容,否则导入 glkit 以使用它们的数学函数,以便您可以按原样使用它。

于 2013-03-27T13:37:20.463 回答