我需要为我的任务做些什么,就是在一个有一些方向的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
答案 0 :(得分:0)
用方向指出你的意思并不完全清楚。正如安东指出的那样,积分没有方向。澄清你的问题(希望)会把这变成一个直接回答的问题。
一些建议:
您以度为单位随机生成纬度和经度,然后转换为弧度。只需生成0到2PI之间的随机数即可。
跟踪您自己的Modelview矩阵。这三个glRotatef
调用可能不会做你想要的。这需要一些线性代数专有技术,但完全值得。您将拥有3D变换的直觉,它将使您的生活变得比处理OpenGL的“便利”方法容易得多。
了解最新的OpenGL。您使用的代码库已经被弃用了大约6年,并且已经被着色器编程取代了更长时间。