ADN Open CIS
Сообщество программистов Autodesk в СНГ

13/08/2015

Твердые тела и поверхности Fusion - Часть 3

Кривые также имеют параметрическое пространство, которое одномерно. Это означает, что любая точка на кривой может быть определена с помощью одного значения параметра. Значения начала и конца параметров являются экстентами кривой, а любое значение между представляет собой определенную точку вдоль кромки, как показано на рисунке ниже.

 

Ниже приведены некоторые из наиболее часто используемых функций оценщика:

SurfaceEvaluator

getNormalAtParameter - Рассчитывает нормальный вектор грани в заданной точке параметра. Нормаль всегда направлена из твердого тела.

getNormalAtPoint - Рассчитывает нормальный вектор грани в заданной точке пространства модели.Нормаль всегда направлена из твердого тела.

getParameterAtPoint - Заданная точка 3D модели в этом возвращает эквивалентную 2D параметрическую точку.

getPointAtParameter - Заданная 2D параметрическая точка, возвращает эквивалентную 3D точку.

isParamOnFace - Заданная 2D параметрический точка, это отображает, лежит ли точка на грани. При этом принимаются во внимание границы грани и это полезно для определения, лежит ли данная точка на видимой части грани или это неверно.

parametricRange - Возвращает максимальный и минимальный параметр координат пространства грани.

CurveEvaluator3D и CurveEvaluator2D

getEndPoints - Получает начальную и конечную точки ребра.

getLengthAtParameter - Возвращает фактическую длину ребра между двумя входными параметрами.

getParameterAtLength - Возвращает значение параметра на заданном расстоянии вдоль кривой от заданной точки параметра.

getParameterAtPoint - Учитывая 3D точку модели, возвращает эквивалентное параметрическое значение по ребру.

getPointAtParameter - Учитывая параметрического значение, возвращает эквивалентный 3D точку.

getParameterExtents - Возвращает минимальные и максимальные значения параметров ребра.

Объект SurfaceEvaluator предоставляет полезные функции для получения нормалей к поверхности: такие как функции getNormalAtPoint и getNormalAtParameter. Нормальным является вектором, который расположен перпендикулярно к поверхности в конкретной точке. Нормали на данной плоской грани идентичны, независимо от их расположения на этой грани. Нормали на сферической грани отличаются в каждой точке этой грани. Направление нормали к твердому телу всегда наружу (т.е. направлено от объема твердого тела). На рисунке ниже показан ряд нормалей, отображаемых на сплайн грани. Нормали все перпендикулярны к грани и указывают в направлении наружу от твердого тела.

 

Пример кода JavaScript ниже показывает, как найти параметрический центр в грани, а затем вернуть нормально поверхности в этом месте. Для задач, которые предполагает получение нескольких нормалей, есть также функция, которая принимает getNormalsAtParameters в массиве объектов и возвращает объект Point2D и массив объектов Vector3D.

Код - JavaScript: [Выделить]
  1. function getNormalAtParametricCenter(face) {
  2. // Получить оценщика из входной грани.
  3. var surfEval = face.evaluator;
  4.  
  5. // Получить мин. и макс. значения параметров для поверхности.
  6. var range = surfEval.parametricRange();
  7.  
  8. // Вычислить центральную точку параметрического диапазона.
  9. var paramPoint = adsk.core.Point2D.create(
  10.             (range.minPoint.x + range.maxPoint.x)/2,
  11.             (range.minPoint.y + range.maxPoint.y)/2);
  12.  
  13. // Получить нормаль в месте, указанном в параметре точки пространства.
  14. var normalObj = [];
  15. surfEval.getNormalAtParameter(paramPoint, normalObj);
  16. var normal = normalObj.value;
  17. // Возвращает нормаль которая является объектом Vector3D.
  18. return normal;
  19. }

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=2996

Опубликовано 13.08.2015
Отредактировано 08.09.2015 в 09:55:47