Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 三维粒子球_Actionscript 3_Actionscript 2 - Fatal编程技术网

Actionscript 3 三维粒子球

Actionscript 3 三维粒子球,actionscript-3,actionscript-2,Actionscript 3,Actionscript 2,如果我想用粒子做一个圆,我会为粒子定义如下的随机坐标: 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)

如果我想用粒子做一个圆,我会为粒子定义如下的随机坐标:

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);
}
但我想在3d空间中创建一个包含粒子的球,但我不知道如何定义粒子的随机坐标。半径再次固定,但应该有一个“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       = ???
}

提前感谢…

球坐标是您想要的

你需要两个角度:

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);
}

球坐标是你想要的

你需要两个角度:

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);
}

不客气。我想你刚才建议编辑第二行,对吗?(无论如何,有人这样做了。)海拔范围从+90度到-90度,而不是0到360度。想想北极和南极以及它们的纬度。我之所以编辑是因为只有“北极”以这个角度出现。我两个都需要:)我觉得行吗?如果Math.random()*180为零,则升降角度为-90。如果是180,那么是+90,对吗?Math.random()输出一个介于0和1之间的数字,对吗?John,你的数学是正确的。random()返回一个伪随机数n,其中0表示感谢。我承认我对动作脚本一窍不通;我作弊并使用了示例中的语法。:)不客气。我想你刚才建议编辑第二行,对吗?(无论如何,有人这样做了。)海拔范围从+90度到-90度,而不是0到360度。想想北极和南极以及它们的纬度。我之所以编辑是因为只有“北极”以这个角度出现。我两个都需要:)我觉得行吗?如果Math.random()*180为零,则升降角度为-90。如果是180,那么是+90,对吗?Math.random()输出一个介于0和1之间的数字,对吗?John,你的数学是正确的。random()返回一个伪随机数n,其中0表示感谢。我承认我对动作脚本一窍不通;我作弊并使用了示例中的语法。:)