Случайно сгенерированные 3D точки на поверхности сферы - PullRequest
0 голосов
/ 17 сентября 2018

Я создаю 3D-точки и обрабатываю их 3D-вращением:

var Points = [] ;
for (var i=0 ; i < 20 ; i++) {
    Points[i] = [
        Math.floor(Math.random()*256),
        Math.floor(Math.random()*256),
        Math.floor(Math.random()*256)
    ] ;
}
Process3DRotation() ;

Но как генерировать случайные трехмерные точки на скрытом шпере следующим образом:

enter image description here

1 Ответ

0 голосов
/ 17 сентября 2018

Хорошо, здесь простой код для равномерной выборки по сфере.Для теории стоит взглянуть на http://mathworld.wolfram.com/SpherePointPicking.html

var radius = 10. ;
var Points = [] ;
for (var i=0 ; i < 20 ; i++) {
    var phi  = 2. * 3.1415926 * Math.random();
    var csth = 1.0 - 2.0 * Math.random();
    var snth = Math.sqrt(1.0 - csth*csth);
    Points[i] = [
        radius * snth * Math.cos(phi),
        radius * snth * Math.sin(phi),
        radius * csth
    ] ;
}
...