2012-05-09 4 views
0

Это довольно простой вопрос. Мне нужно уравнение, чтобы определить, сталкиваются ли две двухмерные линии друг с другом. Если это так, мне также нужно знать положение X и Y столкновений.обнаружение столкновения между двумя линиями

+0

Вы спрашиваете, как проверить, пересекаются ли две линии, или если пути двух движущиеся линии когда-либо заставляли линии пересекаться? – aioobe

+2

Совет, который я действительно хочу вам дать: если у вас когда-либо возник вопрос о геометрии, сначала проверьте: http://paulbourke.net/geometry/. Пол Бурк написал много таких общих вопросов, как ваш: http://paulbourke.net/geometry/lineline2d/. – Yuri

ответ

2

Положите их как в general form. Если А и В одинаковы, то они параллельны. В противном случае создайте два одновременных уравнения и решите для x и y.

+0

@aioobe: Общая форма не страдает от той же проблемы, что и форма склона-перехвата. –

0

Пусть и В, представленный этим параметрической форме: у = х + Ь
Где м является наклон линии
Теперь в случае параллельности A и B их наклон должен быть равен

Иначе они будут сталкиваться друг с другом в точке Т (х, у)
Для нахождения координат точки Т вы должны решить легко уравнение:

A: у = х + Ь
б: у = Mx + B
у (а) = у (в) означает: х + Ь = Mx + B, который уступает х = (B - B)/(м - M) и путем помещения
х к линии мы находим у = ((м * (В - б))/(м - М)) + Ь

так: Т: ((В - b)/(m - M), ((m * (B - b))/(m - M)) + b)

+1

Это может работать в большинстве случаев. Однако есть один важный крайний случай, когда наклон линии не определен. В этом случае вашего подхода недостаточно. – andand

+0

@andand: вы всегда можете найти наклон! Пусть ** A: ax + by + c = 0 ** (это общий вид), то ** m ** (наклон): ** - (b/a) ** – SAbbasizadeh

+0

Что происходит, когда a = 0? – andand

Смежные вопросы