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