Z平面上的项目点坐标

时间:2013-03-27 13:26:27

标签: objective-c language-agnostic geometry projection

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

  • 我有一个点(实际上是一个鼠标点,可以捕捉和移动2D几何体中的顶点),它有一些坐标,比方说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.));

我很感激有关这个简单问题的任何建议!谢谢。

1 个答案:

答案 0 :(得分:1)

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