1
我需要爲我的任務做什麼,是在一個方向上生成一個3D空間中的隨機點。問題是我如何定義這個方向?我該如何改變這個方向。openGL/maths如何設置一個點的方向,並改變這個方向
我所做到目前爲止
-> 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
嚴格地說,點沒有方向。你可以將它們解釋爲從原點開始的位移,它的確有方向......現在轉到實際問題 - 你想旋轉一個特定的對象還是整個世界?或者你的意思是你想要在某個方向上隨機生成一個點嗎? –
我很抱歉沒有讓我自己清楚。這一點應該移動,翻譯成某個方向。這就是我指的某個特定方向的意思,這就是爲什麼我有經度和緯度來定義這個方向的角度。我稍後將該點用作其他形狀的中心,清楚地表明該物體的方向 – Vortakis
您所指的是* ray *,通常表示爲一對矢量,一個用於位置和一個矢量爲方向。就隨機生成方向矢量而言,如果需要更好的性能,但不需要很高的精度,可以考慮從[-1,1]範圍內隨機選擇方向(X,Y,Z)的每個分量,檢查以確保它不等於(0,0,0),並對其進行標準化。一個'sqrt'將比一堆trig函數快得多。唯一的缺點是它們會略微偏向立方體的邊緣和角落。 – bcrist