Render.ru

Модель по заданной функции

Дмитрий Шипачёв

Пользователь сайта
Рейтинг
2
#1
Здравствуйте. Столкнулся с проблемой, которая заключается в следующем: при попытке сделать модель по заданному уравнению значения, которые не входят в ОДЗ, вызывают ошибку. Решил сделать так:
Python:
...
# задаем массив вершин и граней

verts = []
faces = []

# задаем количество квадратных мешей по оси X и Y

numX = 1000
numY = 1000

# массив, в котором хранятся координаты точки
pr = [0, 0, 0]

# задаем масштаб

scale = 1

# создаются точки какой-нибудь функции

for i in range (0, numX):
    for j in range(0,numY):
        # диапазон здесь от -2 до 2
        u = 4*(i/numX-1/2)
        v = 4*(j/numY-1/2)

        x = scale*u
        y = scale*v
        try:
            z = scale*(math.log(u-math.cos(u+v)))
            vert = (x,y,z)
            verts.append(vert)
            pr[0] = x
            pr[1] = y
            pr[2] = z
        except:
            vert = (pr[0],pr[1],pr[2])
            verts.append(vert)
        
# грани

count = 0
for i in range (0, numY *(numX-1)):
    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

# формируем новый меш

mesh = bpy.data.meshes.new("fun")
object = bpy.data.objects.new("fun",mesh)

# задаем положение ячеек

object.location = bpy.context.scene.cursor.location
bpy.context.scene.collection.objects.link(object)

# создаем меш из данных python

mesh.from_pydata(verts,[],faces)
mesh.update(calc_edges=True)
...
В данном случае мне не нравится, что изначально при ошибке будет точка с координатами 0, хотя она не обязательно является значением функции, да и просто что точки будут повторяться. Подскажите, пожалуйста, как это лучше всего исправить?
 
Сверху