Как вычислить середины ребер каждого треугольника икосаэдраPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как вычислить середины ребер каждого треугольника икосаэдра

Сообщение Anonymous »


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

импортировать matplotlib.pyplot как plt импортировать numpy как np num_points = 12 индексы = np.arange(0, num_points, dtype='float') р = 1 вершины = [[0,0, 0,0, -1,0], [0,0, 0,0, 1,0] ] # полюса # икосаэдр для меня в диапазоне (num_points): theta = np.arctan(1/2) * (180/np.pi) # угол 26 градусов фи = np.deg2rad(я * 72) если я >= (num_points/2): тета = -тета фи = np.deg2rad(36 + я * 72) x = r * np.cos(np.deg2rad(тета)) * np.cos(phi) y = r * np.cos(np.deg2rad(тета)) * np.sin(phi) z = r * np.sin(np.deg2rad(тета)) vertices.append([x, y, z]) вершины = np.array(вершины) икосаэдр

# Разделение треугольника для _ в диапазоне (2): для j в диапазоне (0, len(вершины), 3): v1 = вершины[j] v2 = вершины[j + 1] v3 = вершины[j + 2] m1_2 = ((v1 + v2)/2) m2_3 = ((v2 + v3)/2) m1_3 = ((v1 + v3)/2) m1_2 /= np.linalg.norm(m1_2) m2_3 /= np.linalg.norm(m2_3) m1_3 /= np.linalg.norm(m1_3) вершины = np.vstack([вершины, m1_2, m2_3, m1_3,]) печать (вершины) plt.figure().add_subplot(projection='3d').scatter(вершины[:, 0], вершины[:, 1], вершины[:, 2]) plt.show() попытка икосферы

Я использовал это как образец для создания икосаэдра https://www.songho.ca/opengl/gl_sphere.html и чего я ожидаю достичь: геодезический многогранник я попробовал отладить разделение каждого ребра, и все получилось хорошо:

импортировать numpy как np импортировать matplotlib.pyplot как plt вершины = [[1, 1], [2, 3], [3, 1]] вершины = np.array(вершины) для j в диапазоне (2): для i в диапазоне (0, len(вершины), 3): v1 = вершины[я] v2 = вершины[i + 1] v3 = вершины [я + 2] m1_2 = (v1 + v2)/2 m1_3 = (v1 + v3)/2 m2_3 = (v2 + v3)/2 вершины = np.vstack([вершины, m1_2, m1_3, m2_3]) plt.figure().add_subplot().scatter(вершины[:, 0], вершины[:, 1]) plt.plot(вершины[:, 0], вершины[:, 1], '-ok') plt.show() середины каждого края
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как вычислить середины ребер каждого треугольника икосаэдра
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как вычислить угол от точки до середины линии?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как вычислить угол от точки до середины линии?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • IndexedDB ищет слово из середины значений записи в таблице
    Гость » » в форуме Javascript
    0 Ответы
    31 Просмотры
    Последнее сообщение Гость
  • «Положение прокрутки моего CSS-файла сбрасывается до середины при обновлении в VS Code. Есть идеи, почему?»
    Гость » » в форуме CSS
    0 Ответы
    20 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»