Как получить случайные координаты на поверхности сферы? Сейчас вместо сферы куб и точки получаются примерно следующим образом :{ vertices.push(100000); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(-100000); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(100000); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(-100000); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(100000); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(Math.randFloat(-100000, 100000)); vertices.push(-100000); } как проделать тоже самое со сферой
Для получения случайных координат на поверхности сферы, можно воспользоваться сферическими координатами. Пропустим первую строку из вашего кода и добавим следующий код для генерации случайных точек на поверхности сферы:
for (let i = 0; i < numPoints; i++) { let phi = Math.random() * Math.PI * 2; let theta = Math.acos(2 * Math.random() - 1); let x = Math.sin(theta) * Math.cos(phi) * radius; let y = Math.sin(theta) * Math.sin(phi) * radius; let z = Math.cos(theta) * radius; vertices.push(x); vertices.push(y); vertices.push(z); }
В этом коде numPoints - это количество случайных точек, которые вы хотите сгенерировать, radius - радиус сферы.
Этот код использует сферические координаты для генерации случайных точек на поверхности сферы. Переменная phi задает угол поворота вокруг оси Z, а переменная theta задает угол между вектором и осью Z. Затем используется преобразование из сферических координат в декартовые координаты для получения координат точки на поверхности сферы.
Для получения случайных координат на поверхности сферы, можно воспользоваться сферическими координатами. Пропустим первую строку из вашего кода и добавим следующий код для генерации случайных точек на поверхности сферы:
for (let i = 0; i < numPoints; i++) {let phi = Math.random() * Math.PI * 2;
let theta = Math.acos(2 * Math.random() - 1);
let x = Math.sin(theta) * Math.cos(phi) * radius;
let y = Math.sin(theta) * Math.sin(phi) * radius;
let z = Math.cos(theta) * radius;
vertices.push(x);
vertices.push(y);
vertices.push(z);
}
В этом коде numPoints - это количество случайных точек, которые вы хотите сгенерировать, radius - радиус сферы.
Этот код использует сферические координаты для генерации случайных точек на поверхности сферы. Переменная phi задает угол поворота вокруг оси Z, а переменная theta задает угол между вектором и осью Z. Затем используется преобразование из сферических координат в декартовые координаты для получения координат точки на поверхности сферы.