Расстояние от точки до плоскости, дающее неверный результат - PullRequest
0 голосов
/ 20 декабря 2018

У меня проблемы с вычислением расстояния от точки до плоскости, когда я начинаю использовать координаты реального мира.Я могу получить пример для работы с фиктивными координатами, используя числа от -10 до 10. Как только я применю задачу к реальным координатам UTM, я получу странные ответы.

#  Using dummy coordinates
p1 = np.array([1.15, 0.62, -1.01])
p2 = np.array([1.74, 0.86, -0.88])
p3 = np.array([0.91, 0.79, -1.84])
tp =  np.array([1.17, 0.94, -1.52])

u = p2 - p1
v = p3 - p1
# vector normal to plane
n = np.cross(u, v)
n /= np.linalg.norm(n)

p_ = tp - p0
dist_to_plane = np.dot(p_, n)
print(dist_to_plane)

#  Using real-world coordinates
p1 = np.array([503562, 2811504, 1771], dtype='float64')
p2 = np.array([504122, 2810766, 1820], dtype='float64')
p3 = np.array([504325, 2811311, 1042], dtype='float64')
tp = np.array([503618, 2811286, 1808], dtype='float64')

u = p2 - p1
v = p3 - p1
# vector normal to plane
n = np.cross(u, v)
n /= np.linalg.norm(n)

p_ = tp - p0
dist_to_plane = np.dot(p_, n)
print(dist_to_plane) 

Использование фиктивной фигурыкоординаты, я получаю dist = 0.115, что я считаю правильным на основании визуального осмотра.

Используя реальные координаты, я получаю dist = 1820961.09, что определенно не правильно.Расстояние должно быть около 100.

1 Ответ

0 голосов
/ 20 декабря 2018

Прежде всего, p0 не определено (как упомянуто Крейгом Мейером).

Во-вторых, вам это не нужно.Смотрите картинку здесь .Вам нужно вычесть точку P, то есть p_ = tp - p1 в вашем коде.

В-третьих, не забудьте взять абсолютное значение вашего результата (как упомянуто Куанг Хоанг).

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