2012-09-21 77 views
1

如果我想使帶有顆粒的圈子,我會定義粒子隨機座標如下:3D粒子球

for(var i:int = 0; i != 100; i++) 
{ 
var angle:Number = Math.random() * 360; 
var r:Number  = 600; 
var nX:Number  = r * Math.cos(angle/180 * Math.PI); 
var nY:Number  = r * Math.sin(angle/180 * Math.PI); 
} 

但我想打一個球上的三維空間,但我顆粒不知道如何定義粒子的隨機座標。半徑再次固定,但應該有一個「nZ」值。你能幫我定義這些座標嗎?

for(var i:int = 0; i != 100; i++) 
{ 
var angle:Number = Math.random() * 360; 
var r:Number  = 600; 
var nX:Number  = ??? 
var nY:Number  = ??? 
var nZ:Number  = ??? 
} 

在此先感謝...

回答

1

球面座標是你想要什麼。

需要兩個角度:

for(var i:int = 0; i != 100; i++) 
{ 
    var azimuthAngle:Number = Math.random() * 360; 
    var elevationAngle:Number = (Math.random() * 180) - 90; 
    var r:Number = 600; 
    var nX:Number = 
     r * Math.cos(azimuthAngle/180 * Math.PI) * Math.sin(elevationAngle/180 * Math.PI); 
    var nY:Number = 
     r * Math.sin(azimuthAngle/180 * Math.PI) * Math.sin(elevationAngle/180 * Math.PI); 
    var nZ:Number = 
     r * Math.cos(elevationAngle/180 * Math.PI); 
} 
+0

非常感謝! –

+0

不客氣。我想你只是建議編輯第二行,對嗎? (無論如何,有人會這樣做。)高程範圍從+90度到-90度,而不是0度到360度。考慮北極和南極及其緯度。 – John

+0

我編輯是因爲只有「北極」出現在這個角度。我需要兩個:) –