Приведение лучей только на соседние объекты, которые остаются внутри сферы с заданным радиусом, используя VTK и python - PullRequest
0 голосов
/ 15 октября 2019

У меня есть точка в трехмерном пространстве, source_point, и я хочу вычислить расстояние от этой точки до Центра тяжести всех близлежащих объектов, которые PolyData и были построены с помощью VTK. большинство из этих объектов являются цилиндрами. Первым решением, которое мне пришло в голову, было приведение лучей от моего source_point ко ВСЕМ из этих полиданных, а затем вычисление среднего расстояния, но это совсем не практично, поскольку у меня есть миллионы этих объектов вокруг моего source_point, ТАКЖЕ янужно только вычислить близлежащее расстояние, а не все из них, поэтому, используя nearby_radius, я хочу вычислить расстояние до этих PolyData, которые лежат внутри сферы с заданным радиусом (nearby_radius).

В порядкеДля этого я сначала попытался использовать vtkBooleanOperationPolyDataFilter и использовать Union -операцию, чтобы отделить объекты внутри сферы от других, но это не помогло.

Затем я попытался использовать vtkOBBTree, но вместовыбрав PolyData в качестве DataSet, я попытался создать сферу с nearby_radius в качестве радиуса, используя vtkSphereSource, но проблема в том, что я не могу извлечь PolyData внутри сферы.

Вот мой код для ray_casting для PolyData:

def ray_cast_polydata(polydata, p_source, p_target):

    obbtree = vtk.vtkOBBTree()
    obbtree.SetDataSet(polydata)
    obbtree.BuildLocator()

    pointsVTKIntersection = vtk.vtkPoints()
    code = obbtree.IntersectWithLine(p_source, p_target, pointsVTKIntersection, None)
    # Extracting data
    pointsVTKIntersectionData = pointsVTKIntersection.GetData()
    noPointsVTKIntersection = pointsVTKIntersectionData.GetNumberOfTuples()
    pointsIntersection = []

    for idx in range(noPointsVTKIntersection):
        _tup = pointsVTKIntersectionData.GetTuple3(idx)
        pointsIntersection.append(_tup)

    return code, pointsIntersection, noPointsVTKIntersection

Вот упрощенная иллюстрация того, что я пытаюсь сделать, желтая сфера и ее внутренние объекты - это то, что я пытаюсь вычислитьгistance. enter image description here

Буду признателен за любые комментарии и советы от вас, ребята.

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