Рисование платоновых тел - PullRequest
2 голосов
/ 13 февраля 2012

Скажем, у нас есть этот бит кода для рисования правильного многоугольника (вычислить его координаты вершины)

for i=1 to n
 angle += 360/n
 x = cos(angle) * radius
 y = sin(angle) * radius
 plot(x,y)
end

Здесь основная идея заключается в увеличении угла и вычислении координаты "курсора".Для большого N курсор описал бы окружность.

Есть ли что-нибудь подобное, кроме кубов и тетраэдров или других правильных многогранников?Представьте себе куб внутри теннисного мяча с вершинами на линии теннисного мяча (на каждом теннисном шаре есть волнистая линия).Эта строка может быть траекторией курсора, который посещает вершины куба

Я думаю об алгоритме в виде:

for i=1 to ...
 yaw += ...
 pitch += ...
 x = radius * sin(pitch) * cos(yaw)
 y = radius * sin(pitch) * sin(yaw)
 z = radius * cos(pitch)
 plot(x,y,z)
end

Ответы [ 2 ]

0 голосов
/ 03 августа 2018

Похоже, сферы Фибоначчи или подход притяжения / отталкивания - это то, что вы ищете.Это обсуждалось в этой теме: Равномерное распределение n точек на сфере

0 голосов
/ 16 февраля 2012

Как говорит ChrisF, нет и не должно быть формулы для обычных платоновых тел.Просто используйте данные декартовы координаты.Геометрия на сфере гораздо более ограничена, чем на окружности.

Предлагаемый вами подход основан на сферических координатах с фиксированным радиусом, поэтому все сгенерированные точки будут лежать на сфере.

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

Нам гораздо лучше знакомо использование двойной петли на рыскании.(От 0 до 180 °) и шаг (от 0 до 360 °) независимо друг от друга, что позволяет объединять сферы с меридианами и параллелями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...