포인트와 포인트 정의가 정의되어 있습니다. 또한이 점을 포함하거나 포함하지 않는 polydata가 있다고 가정합니다.polyData와 방향을 따라 점 사이의 거리를 찾는 방법은 무엇입니까?
이 지점에서부터 polydata 법선을 따라 polydata까지의 거리를 찾고 싶습니다. 거리에 의해, 나는 그것이 얼마나 멀리 요점을 번역해서 그것이 polydata에 의해 정의 된 표면에 "닿도록"해야 하는지를 의미합니다.
vtk와 관련이 있습니까?
포인트와 포인트 정의가 정의되어 있습니다. 또한이 점을 포함하거나 포함하지 않는 polydata가 있다고 가정합니다.polyData와 방향을 따라 점 사이의 거리를 찾는 방법은 무엇입니까?
이 지점에서부터 polydata 법선을 따라 polydata까지의 거리를 찾고 싶습니다. 거리에 의해, 나는 그것이 얼마나 멀리 요점을 번역해서 그것이 polydata에 의해 정의 된 표면에 "닿도록"해야 하는지를 의미합니다.
vtk와 관련이 있습니까?
먼저 vtk 또는 엔진 패키지에 대한 전문가가 아닙니다. 하지만 첫 번째 질문은 순수한 기하학적 질문입니다. 먼저 polydata가 그 평면에있는 점 (PlaneDefPoint)과 평면 법선 (PlaneDefNormal)으로 계산해야하는 평면을 계산해야합니다. 해당 평면에있는 3 점 거짓 (이 경우에는 polydata에서 3 점)에서 얻은 두 벡터의 외적을 계산하여 계산할 수 있습니다.
* Point
PlaneDefNormal /
^/
|/
---------------*------------------- Plane
PlaneDefPoint
비행기 정의를 얻은 후에. 평면의 정의 점 (PlaneDefPoint)에서 점까지 벡터를 계산하고이 벡터의 내적을 평면의 법선 (PlaneDefNormal)으로 계산합니다 (그림에서 기울어 짐).
정상에서 계산 된 세그먼트와 교차점을 확인할 수 있습니다. vtkCellLocator :: InteresectwithLine 메서드는 교차점을 제공합니다. 이 방법의 문제점은 세그먼트가 너무 짧으면 polydata를 충족시키지 못한다는 것입니다. 세그먼트가 "너무 길다"면 polydata를 두 번 교차 할 수 있습니다. 검색하려면 교차로를주의해야합니다. (vtkCellLocator :: FindCellsAlongLine을 사용하여)이 사례를 처리하는보다 복잡한 예제는 vtkSelectEnclosedPoints :: IsInsideSurface (http://fossies.org/dox/ParaView-v4.1.0-source/vtkSelectEnclosedPoints_8cxx_source.html)
의 구현을 참조하십시오. 나는 비슷한 접근법을 가졌다. 포인트 법선을 계산하고 이러한 정상 방향으로 선을 생성했습니다. 나는 OBB 나무의 사용법을 통해 교차점을 감지하고 거리를 계산할 수있었습니다. 어쨌든, 당신의 충고에 감사드립니다. –
이 방법은 "편평한"polydata의 표면에서만 작동합니다. 일반 polydata – lib
물론 .... 3D 표면이 명시 적으로 묻지도 않고 질문의 세부 사항이 3D로 연결되지 않기 때문에 2D 표면이 가정됩니다. –