Точка, вектор, вспомогательные функции.

В библиотеки ZenCad есть некоторые вспомогательные математические объекты и функции для работы с ними.


Точка

Некоторые функции ZenCad используют в качестве параметров точки или массивы точек. Для создания объекта точки можно использовать функцию point3. Кроме того, часто функция может сама сформировать точки по списку или кортежу координат.

point3(0,3,6)

#Equivalent calls
interpolate([point3(0,0,0), point3(0,0,10), point3(10,0,10)])
interpolate([(0,0,0), (0,0,10), (10,0,10)])
interpolate(points([(0,0,0), (0,0,10), (10,0,10)]))

Точка может быть отображена функцией display, как соответствующая такой точке вершина.


Вектор

Иногда кроме указаний точек используются объекты-векторы для указания направлений. Принцип работы с векторами аналогичен работе с точками.

vector3(1,2,3)

interpolate(pnts=[(0,0,0), (0,0,10), (10,0,10)], tangs=[(0,0,1), (1,0,0), (0,1,0)])

Вектор не может быть отображен непосредственно. В отличии от точки вектор игнорирует трансляцию при преобразованиях.


Масивы точек и векторов

Функции vectors и points явно создают массивы точек из массивов координат. points2 создаёт двумерный массив точек из двумерного списка.

points([(0,0,0), (0,0,10), (10,0,10)])
vectors([(0,0,1), (1,0,0), (0,1,0)])

points2([
[(0,0,0), (0,0,10), (10,0,10)],
[(1,6,0), (0,5,10), (10,5,10)]
])

Инкрементальный масив точек

Создаёт массив точек на основе смещений.

points_incremental([(0,2,0), (0,0,10), (5,0,0), (5,0,0)])
# Создаёт масив точек:
# (0,2,0)
# (0,2,10)
# (5,2,10)
# (10,2,10)

Операции над точками и векторами

Точки и вектора могут использоваться в математических операциях в соответствиями с правилами линейной алгебры.

pnt - pnt -> vec
pnt + vec -> pnt
vec + vec -> vec
vec - vec -> vec

Пустое примитив. nullshape

Пустой примитив. Может участвовать в булевых операциях.

Пример использования в цикле:

it = nullshape()
for i in range(7):
it = it + box(20).translate(10*i,10*i,10*i)

#alternate: union([box(20).translate(10*i,10*i,10*i) for i in range(7)])

Перевод угловых величин. Радианы и градусы

API zencad использует радианы для задания углов. Использование градусов требует масштабирования численного коэффициента. Именно этим и занимается функция deg (синоним deg2rad): deg(180) соответствует math.pi.

Обратное преобразование выполняется функцией rad2deg.

Сигнатуры:

# Convert degrees to radians:
def deg2rad(grad)
def deg(grad)

# Convert radians to degrees:
def rad2deg(rad)

Код функции deg2rad, rad2deg:

def deg2rad(grad):
return float(grad) / 180.0 * math.pi

def rad2deg(rad):
return float(rad) * 180.0 / math.pi

Пример:

rotateZ(deg(45))

Зарегистрировать шрифт

Регистрирует в системе шрифт в формате FreeType.