Твердые тела и поверхности 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.
- function getNormalAtParametricCenter(face) {
- // Получить оценщика из входной грани.
- var surfEval = face.evaluator;
- // Получить мин. и макс. значения параметров для поверхности.
- var range = surfEval.parametricRange();
- // Вычислить центральную точку параметрического диапазона.
- var paramPoint = adsk.core.Point2D.create(
- (range.minPoint.x + range.maxPoint.x)/2,
- (range.minPoint.y + range.maxPoint.y)/2);
- // Получить нормаль в месте, указанном в параметре точки пространства.
- var normalObj = [];
- surfEval.getNormalAtParameter(paramPoint, normalObj);
- var normal = normalObj.value;
- // Возвращает нормаль которая является объектом Vector3D.
- return normal;
- }
Обсуждение: http://adn-cis.org/forum/index.php?topic=2996
Опубликовано 13.08.2015Отредактировано 08.09.2015 в 09:55:47