найти все точки вокруг точки в кубе - PullRequest
0 голосов
/ 18 января 2019

Допустим, у меня есть список точек P0, P1, P2, P3 с координатами X,Y,Z

Тогда у меня есть список точек с координатами X1, Y1, Z1

Мне нужно было найти все точки внутри определенного радиуса вокруг P0: я сделал это с помощью библиотеки python scipy, используя функции kdtree и query_ball_point.

Но теперь я бы хотел найти все точки внутри куба. Точки (P0 и P1) не центрированы в прямоугольнике.

(Z) высота прямоугольника равна Z + 4. (Y) Левая сторона P0 равна +2, а правая часть P0 равна +1. Чтобы получить X нам нужно вычислить расстояние между P0 и P1 ...

Есть идеи?

У меня хорошие знания по программированию, но мои математические и геометрические навыки отсутствуют.

1 Ответ

0 голосов
/ 18 января 2019

все, что вам нужно сделать, это проверить все условия удаленности для каждой точки относительно вашего прямоугольника - во всех измерениях x, y, z.

Допустим, у вас есть центр прямоугольника с координатами cx, cy, cz

и вы знаете, что расстояние со стороны X равно dX, со стороны Y - dY, а со стороны Z - dZ.

координаты вашего так называемого центра: cx, cy, cz

вы можете сделать петлю

for point in all_points:
    px,py,pz = point # coordinates of a point which you try to examine

    if abs(cx-point[x]) < dX:
        if abs(cy-point[y]) < dY:
            if abs(cz-point[z]) < dZ:
                print('point is inside so called cube')


#abs(cx-point[x]) equals distance between your center and examined point in x-axis dimension...
#dX is distance between cube side and cx (center of cube in x-axis)

Примечание:

Этот пример хорош для куба с центром в середине. Поскольку ваш центр на самом деле не посередине, я советую вам найти центр и выполнить приведенный выше пример

Если вы не можете рассчитать центр своего куба, вы все равно не сможете решить эту проблему, поэтому вам лучше найти центр.

...