Функции работы с контурами

Материал из K3-Macro
(перенаправлено с «ContNormUcs»)
Макро | Функции работы с объектами сцены | Инициализация списков объектов | Экспорт изображения объектов сцены | Выборка информации об объектах сцены | Функции работы с контурами | Проверка попадания объектов в область

GetPathPoint[править | править код]

DOUBLE GetPathPoint(OBJECT <Obj>, DOUBLE <Pars>, double ARRAY <Arr[3]>)

Функция заполняет массив <Arr> координатами точки в ГСК на контуре <Obj> по параметру <Pars>. Параметр <Pars> – вещественное число в интервале (0;1) по длине контура (0 – начало контура, 1 – конец контура, 0.5 – середина контура) Функция возвращает длину контура или ноль в случае ошибки.

ContNorm, ContNormUcs[править | править код]

Int ContNorm(object <Obj>, Double array <Vector[3]>)

Int ContNormUcs(object <Obj>, double array <Vector[3]>)

Функции заполняют массив <Vector> значениями координат нормали замкнутого плоского контура без самопересечений <Obj> в ГСК (ContNorm) или ПСК (ContNormUcs). Массив <Vector> изначально должен содержать значения координат вектора, указывающих направление в интересующую сторону от плоскости контура. Функции возвращают код ответа:

(+/-)1<Obj> задаёт плоский замкнутый контур без самопересечений, который ориентирован положительно (против часовой стрелки (+1)) или отрицательно (по часовой стрелке (-1)), если смотреть на него против вектора нормали <Vector>;

0 — заданный вектор лежит в плоскости контура <Obj>, при этом на выходе <Vector> будет задавать нормаль в сторону, относительно которой контур ориентирован положительно;

2<Obj> не контур;

3<Obj> не является плоским замкнутым контуром без самопересечений;

4 — нельзя вычислить уравнение плоскости контура;

ContStatus[править | править код]

INT ContStatus(OBJECT <Obj>, varname ARRAY <Arr>)

Функции заполняет массив <Arr> статусом указанного контура (в том числе отрезка, дуги, окружности, полилинии и сплайна) с именем <Obj>. <Arr> — массив от одного до пяти элементов. На выходе в массив <Arr> будет записано:

Arr[1]0 контур не плоский; 1 контур плоский

Arr[2] 0 контур не замкнутый; 1 контур замкнутый

Arr[3] 0 контур с самопересечениями; 1 контур без самопересечений

Arr[4] 0 контур не выпуклый; 1 контур выпуклый, 2 выпуклость контура определить не удалось

Arr[5] (только для полилиний) — 0 — полилиния, не являющаяся плоской областью; 1 — плоская область; 2 — объект <Obj> не является ни полилинией, ни плоской областью

Функция возвращает код ответа:

0 — ошибка: <Obj> не является контуром.
1..5 — количество заполненных элементов массива <Arr> (зависит от размерности массива <Arr>)

TestArcsPath[править | править код]

Функция TestArcsPath

INT TestArcsPath(OBJECT <Path>[, DOUBLE <EpsArc>[, DOUBLE <EpsAngle>]]);

Функция проверяет возможность покрыть контур <Path> дугами с требуемой точностью, задаваемой параметрами <EpsArc> и <EpsAngle>. Необязательный параметр <EpsArc> - точность аппроксимации контура - максимальное расстояние между исходным контуром и контуром, покрытым дугами. <EpsAngle> — порог покрытия дугами. Если угол между двумя соседними отрезками контура меньше этого порога, то эти отрезки остаются отрезками (не покрываются дугами) (см. рисунок). Если необязательные параметры не заданы, то используется их последнее заданное значение. При старте K3 <EpsArc> = 1; <EpsAngle> = pi()/24.

Функция возвращает:

1 — контур можно покрыть дугами
0 — контур нельзя покрыть дугами
-1 — ошибка во время выполнения проверки
-2 — задан не контур
-3 — задан не плоский контур

Макро | Функции работы с объектами сцены | Инициализация списков объектов | Экспорт изображения объектов сцены | Выборка информации об объектах сцены | Функции работы с контурами | Проверка попадания объектов в область