openGL / maths如何设置一个点的方向,并改变那个方向

时间:2013-11-22 02:29:26

标签: opengl math

我需要为我的任务做些什么,就是在一个有一些方向的3D空间中生成随机点。问题是如何定义这个方向?我该如何改变这个方向。

到目前为止我做了什么

-> Generate random point(x, y, z)
-> generate random latitude between 0 to 360
-> generate random longitude between 0 to 360
-> dirX = cos(lat* DEG_TO_RAD) * sin(lon * DEG_TO_RAD);
   dirY = sin(lat * DEG_TO_RAD);
   dirZ = cos(lat * DEG_TO_RAD) * cos(lon * DEG_TO_RAD);

然后我渲染:

glTranslatef(pointX, pointY, pointZ);
glRotatef(dirX, 1, 0, 0);
glRotatef(dirY, 0, 1, 0);
glRotatef(dirZ, 0, 0, 1);

这样好吗?我想知道我是做错了,无论是数学方面还是openglwise

1 个答案:

答案 0 :(得分:0)

用方向指出你的意思并不完全清楚。正如安东指出的那样,积分没有方向。澄清你的问题(希望)会把这变成一个直接回答的问题。

一些建议:

  • 您以度为单位随机生成纬度和经度,然后转换为弧度。只需生成0到2PI之间的随机数即可。

  • 跟踪您自己的Modelview矩阵。这三个glRotatef调用可能不会做你想要的。这需要一些线性代数专有技术,但完全值得。您将拥有3D变换的直觉,它将使您的生活变得比处理OpenGL的“便利”方法容易得多。

  • 了解最新的OpenGL。您使用的代码库已经被弃用了大约6年,并且已经被着色器编程取代了更长时间。