Как найти расстояние между полиданными и точкой вдоль направления? - PullRequest
1 голос
/ 29 марта 2012

У меня есть точка и точка, нормальная к ней. Предположим, у меня также есть полиданные, которые не включают или не охватывают эту точку.

Я хочу найти расстояние от этой точки до полиданных вдоль полиданных по нормали. Под расстоянием я подразумеваю, как далеко я должен перевести точку, чтобы она «касалась» поверхности, определяемой полиданными.

Можно ли это сделать с помощью vtk?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Во-первых, я не эксперт по vtk или любому пакету двигателей. Но твой первый вопрос чисто геометрический. Сначала вы должны вычислить плоскость, на которой лежат полиданные, как точку (PlaneDefPoint) в этой плоскости и плоскость, нормальную (PlaneDefNormal). Вы можете вычислить его путем вычисления перекрестного произведения двух векторов, полученных из трех точек, лежащих на этой плоскости (в данном случае три точки из ваших полиданных).

                   *  Point
PlaneDefNormal    /
               ^ /               
               |/
---------------*-------------------  Plane
         PlaneDefPoint

После того, как вы получите определения плоскостей. Вычислить вектор до точки из точки определения плоскости (PlaneDefPoint) и вычислить произведение точки этого вектора (наклонной на рисунке) с плоскостью, нормальной (PlaneDefNormal).

1 голос
/ 07 июля 2014

Вы можете проверить пересечение с сегментом, вычисленным по нормали.Метод vtkCellLocator :: InteresectwithLine даст вам точки пересечения.Проблема этого метода заключается в том, что если сегмент «слишком короткий», вы не встретите полиданные.Если сегмент «слишком длинный», вы можете пересекать полиданные дважды, а затем вы должны быть осторожны при пересечении для извлечения.Для более сложного примера, который обрабатывает этот случай (с помощью vtkCellLocator :: FindCellsAlongLine), см. Реализацию vtkSelectEnclosedPoints :: IsInsideSurface (http://fossies.org/dox/ParaView-v4.1.0-source/vtkSelectEnclosedPoints_8cxx_source.html)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...