Аналог 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)

Результат: введите сюда описание изображения

→ Ссылка