пересекающаяся линия и массив точек? - PullRequest
1 голос
/ 01 июня 2010

У меня есть линия на нормальном графике, я хочу знать, что некоторые точки пересекаются с этой линией, есть ли какая-нибудь формула? Линия начинается с начальной точки (50,50), конечной точки (50,0) .... некоторая точка может быть (0,10), (2,45) и т. Д.

Ответы [ 2 ]

2 голосов
/ 01 июня 2010
  1. Составьте линейное уравнение
  2. Проверьте, удовлетворяет ли ваша точка этому уравнению.

Уравнение прямой, проходящей 2 произвольные точки (x1, y1) и (x2, y2):

(y1-y2)x + (x2-x1)y + (x1*y2 - x2*y1) = 0

В вашем случае линия просто вертикальная, а ее уравнение равно

x = 50

Если вы также хотите проверить, принадлежит ли точка сегменту линии, а не всей линии, вы можете проверить, что выполняется следующее неравенство (в дополнение к предыдущему условию) (возможно, это не самое элегантное / эффективное решение ):

(x-x1)*(x-x2)+(y-y1)*(y-y2) < 0
1 голос
/ 01 июня 2010

Ну, если вы знаете конечные точки интересующей вас линии, это легко. Любая точка на линии имеет формулу

a * p1 + (1-a) * p2

где p1, p2 - конечные точки, а a - скаляр. Если а находится между 0 и 1, точка лежит между конечными точками.

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