Как рассчитать линию кратчайшего расстояния между двумя наборами отрезков, которая проходит через известную точку? - PullRequest
2 голосов
/ 30 мая 2011

Даны два набора отрезков (xa1..N, ya1..N) и (xb1..N, yb1..N), которые представляют верхнюю и нижнюю поверхности геологической единицы, и известную точку (xc1 , yc1) в пределах геологической единицы, как найти линию кратчайшего расстояния между (xa, ya) и (xb, yb), которая проходит через (xc1, yc1).

1 Ответ

0 голосов
/ 18 февраля 2012

Если я правильно понимаю, вы ищете промежуточную полилинию между двумя заданными полилиниями через данную точку.

Если ваши две исходные полилинии имеют одинаковое количество точек, вы можете рассмотреть линейную интерполяцию между соответствующими сегментами, используя параметр t в диапазоне [0 1]. Каждая новая вершина задается

Xti = (1 - t) Xai + t Xbi
Yti = (1 - t) Yai + t Ybi

Когда t = 0, это дает верхнюю поверхность, t = 1 нижнюю поверхность и другие t промежуточных поверхностей.

Теперь осталось найти значение t, через которое проходит линия (xc, yc). Каждый сегмент может быть представлен своим параметрическим уравнением между точкой i и i + 1 (пусть j), используя некоторый параметр p. Это приводит к следующим уравнениям:

Xc= (1 - p) Xti + p Xtj
Yc= (1 - p) Yti + p Ytj

Теперь для каждого сегмента i-j у вас есть система из двух уравнений с двумя неизвестными (t и p). Вы сохраните решение i-j таким образом, чтобы p попадало в диапазон [0 1]

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