Вычислить точки сферы?

Я хочу рассчитать сферу (и визуализировать ее с помощью моей программы на JavaScript (визуализация работает успешно))

Я нашел такой вопрос: Нанесение точки на краю сферы а потом я разработал этот код:

for(var s = 0; s < 6; s++){
    for(var t = 0; t <= 3; t++){
        var x = d * Math.cos(s) * Math.sin(t);
        var y = d * Math.sin(s) * Math.sin(t);
        var z = d * Math.cos(t);
        console.info("("+x+","+y+","+z+")");
    }
}

Это выглядит как:

Вычислить точки сферы?

Это не похоже на сферу!

Поэтому я изменил s ++ на s + = 0.1 и t ++ на t + = 0.1.

Теперь это выглядит так:

Вычислить точки сферы?

Теперь это выглядит лучше, НО МОЯ БОЛЬШАЯ ПРОБЛЕМА: посередине линии должны пересекаться по оси Z. Думаю, вы лучше видите проблему на первом изображении.

Спасибо за ответы!

Обновлено:РЕШЕНИЕ: неотредактированный ответ от @MBo:

for(var ss = 0; ss < 24; ss++){
    for(var tt = 0; tt <= 12; tt++){
        s = Math.Pi * ss / 12;
        t = Math.Pi * tt / 12;
        ...x y z stuff

Предполагается, что углы s и t находятся в диапазоне [0, 2*PI]. Но вы относитесь к ним как к целым?

Ripi2 15.03.2018 18:17
t <= 3 - вы округляете число Пи до 3? en.wikipedia.org/wiki/Indiana_Pi_Bill
Igor 15.03.2018 18:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
227
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

s и t - углы полярных координат, они должны быть в диапазонах 2*Pi~6.28 и Pi~3.14 соответственно.

Так что делайте правильные шаги, например:

var lonsteps = 24
var latsteps = 12 
for(var ss = 0; ss < lonsteps; ss++){
    for(var tt = 0; tt <= latsteps; tt++){
        s = 2 * Math.PI * ss / lonsteps;
        t = Math.PI * tt / latsteps;
        ...x y z stuff

Ваш старый ответ работает, но ваш новый ответ не работает с отрицательными значениями. Пожалуйста, верните его обратно.

Freddy C. 15.03.2018 18:32

@Freddy C Хорошо, я забыл, что сдвиг на Pi / 2 требует обмена cos (t) и sin (t). Поменял обратно.

MBo 15.03.2018 18:40

Большое спасибо! Я поставил вам зеленую галочку. Пожалуйста, также измените Math.Pi на Math.PI, это тоже ошибка.

Freddy C. 15.03.2018 18:42

Другие вопросы по теме