- Рейтинг
- 2
Здравствуйте. Столкнулся с проблемой, которая заключается в следующем: при попытке сделать модель по заданному уравнению значения, которые не входят в ОДЗ, вызывают ошибку. Решил сделать так:
В данном случае мне не нравится, что изначально при ошибке будет точка с координатами 0, хотя она не обязательно является значением функции, да и просто что точки будут повторяться. Подскажите, пожалуйста, как это лучше всего исправить?
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)
...