Я разрабатываю веб-приложение (с использованием html и js) для программы с конечными элементами, которую я разработал на Python.
Одной из функций, которые я хочу иметь, является возможность отображения сетки конечных элементов, импортированной пользователем. Я искал в Интернете и обнаружил, что plotly
будет идеальной библиотекой для этого, но я столкнулся с некоторыми проблемами ... Чтобы продемонстрировать это, я покажу, что я получаю (и что я должен получить), когда я попробуйте построить квадрат 4хэлемента 1х1:
Как видите, один из элементов разрезан пополам и не должен. Я обнаружил, что причина, по которой графически не строится правильная сетка, заключается в ее алгоритме: в основном у вас есть два массива (x
и y
), которые содержат упорядоченную последовательность координат точек. Таким образом, чтобы построить линию между (0,0) и (0,1), ваши массивы должны быть такими: x=[0,0]
и y=[0,1]
.
Проблема в том, что я не могу сделать хороший алгоритм, который преобразует мой «формат сетки» в «формат сетки» плотно.
Вот мой формат сетки для приведенного выше примера:
nodes=[[0, 0],
[1, 0],
[1, 1],
[0, 1],
[0.5, 0],
[1, 0.5],
[0.5, 1],
[0, 0.5],
[0.5, 0.5]]
elements: [[0, 4, 8, 7],
[7, 8, 6, 3],
[4, 1, 5, 8],
[8, 5, 2, 6]]
Алгоритм, который я использовал (и одно желание не работает), следующий:
y_plotly=[]
z_plotly=[]
for element in elements:
for node in range(4):
y_plotly.append(nodes[element[node]][0])
z_plotly.append(nodes[element[node]][1])
y_plotly.append(nodes[element[0]][0])
z_plotly.append(nodes[element[0]][1])
Не могли бы вы, ребята, помочь мне разобраться в этом алгоритме? Заранее спасибо !!