Точка, вектор, вспомогательные функции.
В библиотеки 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.