Аналог matplotlib
Мне нужен инструментарий для построения 3д криволинейных поверхностей и получить ее визуализаию. Пока работал только в matplotlib хотелось бы найти альтернативную библиотеку возможно на других языках или на python, посмотреть их функионал. Задать правильный вопрос гуглу у меня не получается. Либо возможно есть готовые варианты пакетов в 3dsMax, Blender и тд.
Ответы (1 шт):
Автор решения: rossicusa
→ Ссылка
Вот пример кода на Python, для построения в Blender 3D, поверхности в виде Гауссова распределения:
import bpy
import math
# задаем массив вершин и граней
verts = []
faces = []
# задаем количество квадратных мешей по оси X и Y
numX = 100
numY = 100
# задаем масштаб квадратных мешей и величину выпуклости поверхности
variance = .35
scale = 4
# заполняем массив вершин
for i in range (0, numX):
for j in range(0,numY):
# нормализуем диапазон и формируем массив чисел
u = 2*(i/numX-1/2)
v = 2*(j/numY-1/2)
s = variance
x = scale*u
y = scale*v
z = scale*1/math.sqrt(2*math.pi*s*s)*math.exp(-(u*u+v*v)/(2*s*s))
vert = (x,y,z)
verts.append(vert)
# заполняем полученный массив гранями
count = 0 # count — подсчет повторов элемента
for i in range (0, numY *(numX-1)):
# range (старт, стоп, шаг)
if count < numY-1:
A = i
B = i+1
C = (i+numY)+1
D = (i+numY)
face = (A,B,C,D)
faces.append(face)
count = count + 1
else:
count = 0
# формируем новый меш с именем wave
mesh = bpy.data.meshes.new("wave")
object = bpy.data.objects.new("wave",mesh)
# задаем положение ячеек
object.location = bpy.context.scene.cursor.location
bpy.context.collection.objects.link(object)
# создаем меш из данных python
mesh.from_pydata(verts,[],faces)
mesh.update(calc_edges=True)
