Как получить случайные координаты на поверхности сферы? Сейчас вместо сферы куб и точки получаются примерно следующим образом :{
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);
}
как проделать тоже самое со сферой

21 Авг 2019 в 06:04
195 +1
0
Ответы
1

Для получения случайных координат на поверхности сферы, можно воспользоваться сферическими координатами. Пропустим первую строку из вашего кода и добавим следующий код для генерации случайных точек на поверхности сферы:

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. Затем используется преобразование из сферических координат в декартовые координаты для получения координат точки на поверхности сферы.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир