Найти правильную соответствующую точку для продолжения линии - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть две непараллельные линии (XA и YB), которые мне нужно расширить до изогнутой линии (PQ).Линии состоят из массивов точек (x, y).A - последняя точка в линии XA, а B - последняя точка в линии YB.P и Q - граничные точки кривой.

![enter image description here

Теперь мне нужно расширить точку A до P и точку B до Q.таким образом, я могу найти правильную соответствующую точку кривой PQ, так что A-> P и B-> Q, а не A-> Q и B-> P, в последнем случае расширенные линии будут пересекаться, что не должно происходить,

Ранее я пробовал простое логическое значение, но оно было неверным.

То, что я пробовал;

if(abs(A.x() - P.x()) < abs(B.x() - P.x())
   // extend A to P
   // extend B to Q
else
   // extend A to Q
   // extend B to P

Вышеприведенное не сработает для изображения, показанного ниже,тогда линия A будет расширена до точки Q, а линия B до P (расширение выделено красным).

![![enter image description here

Решения должны выглядеть следующим образом;

enter image description here enter image description hereenter image description here

Любая помощь будет оценена.

1 Ответ

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

Один из способов сделать это:

Попробуйте один вариант, проверьте, пересекаются ли два сегмента, и если это так, то это другой вариант.

Например, попробуйте [AP], [BQ].Проверьте, не пересекаются ли они.Если нет, то это ваш конфиг.В противном случае конфигурация будет [AQ], [BP]

Чтобы проверить, пересекаются ли два отрезка, это просто математика.Проверьте это сообщение от math.stackexchange: https://math.stackexchange.com/questions/149622/finding-out-whether-two-line-segments-intersect-each-other

...