我的iPhone应用程序中有(x,y,z)坐标有40个点。现在我只是NSLog他们。但是我想把它们展示出来...... 3D!
我怎样才能做到这一点?我必须使用openGL ES吗?其他可能性是什么(如果有的话)?
我从来没有在编程中使用3D ......这是一件难事吗?
谢谢!
答案 0 :(得分:0)
您可以使用CGContext绘图API进行自己的三维数学运算并渲染到二维曲面,也可以使用OpenGL ES为您进行变换和渲染。这两种选择都有利有弊,它们都有学习曲线。
我推荐使用OpenGL选项,因为最终结果会更简单,更快速,并且您获得的技能将更加可重复使用。
答案 1 :(得分:0)
让我简单介绍一下硬连线设置,如果您只想在不学习任何新API的情况下绘制点数,就可以开始使用。
让我们假设一个90度视野的相机。我们假设您要绘制宽度和高度w
的方形窗口。将z
坐标解释为距离'进入'屏幕。
然后在
给出的坐标(x,y,z)
处绘制点(X,Y)
X = w/2+w/2*x/z
Y = w/2+w/2*y/z
w/2+
位是窗口中心的偏移量。 w/2*
位是一个缩放,使您的90度视野填满窗口。 /z
但是缩放使得更远的东西看起来更小。就是这样!
但有些事情需要注意。如果z <= 0
那么你不想画那个点,因为它在镜头后面,或者更糟糕的是,在屏幕的平面上得到除以零。在绘制之前,您可能需要检查X
和Y
是否在范围内。如果没有,那么你将尝试绘制在你的视野范围之外的点。
当然,OpenGL可以自动为你做很多事情,它可以让你改变相机,绘制不仅仅是点,旋转点,以及快速完成所有操作。但是首先要学习这些原则是很好的。
(顺便说一句,一个常见的惯例是仅使用z<0
而不是z>0
绘制点。在这种情况下,您需要将+
替换为-
上面的代码。)
(修正了错字。感谢您指出来!)
答案 2 :(得分:-1)
如果您要以3D显示点并进行自己的数学计算,那么它非常简单,只要它们都是点并且您正在直视其中一个轴。数学很简单,你可以使用这样的东西开始:
http://www.cleverpig.com/tutorials/starfield/
现在,如果您想使用更逼真的透视投影,绘制线条,3D对象,使用“相机”进行播放或执行复杂的动画,将会显示OpenGL ES。