Пересечение линейного сегмента XNA?

Позволяет говорят, что мы имеем 4 Vector2(да это является 2-м), таким образом, у нас есть lineOneStart, lineOneEnd, lineTwoStart и lineTwoEnd.

Как я могу обнаружить, если эти 2 строки пересекаются? Я не забочусь, где они пересекаются, я просто хочу знать, пересекаются ли они.

8
задан Finglas 17 February 2010 в 22:25
поделиться

2 ответа

Определенно серый участок. Классическим является то, сколько бизнес-логики нужно внести в вопрос базы данных.

Если бы мы хотели быть пуристскими и сказать, что бизнес-логика не принадлежит в базе данных, то ответ никогда бы не использовал их.

На практике мы можем сделать исключение, как мы часто делаем, и допустить логику по умолчанию в базу данных.

-121--2439274-

Из документации MSDN :

Инструкция using обеспечивает вызов Dispose, даже если происходит исключение при вызове методов для объекта. Такой же результат можно получить, поместив объект в блок try, а затем вызвав Dispose в блоке finally; фактически, именно так оператор using переводится компилятором.

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

-121--2258366-

Проверьте эту формулу по Бурку .

Мне недавно тоже пришлось решить этот вопрос. Другой вариант - использование (получение) уравнения линии ( y = mx + c ), но есть несколько вариантов ребер, которые необходимо учитывать, а также проверка того, находится ли точка пересечения внутри отрезка линии. Формула в ссылке выше работает, хотя я не могу действительно комментировать, как уравнение переупорядочено, все, что я скажу, это работает;)

Изменить :

Как упомянуто AndiDog, другой сайт я использовал (пример отличный тоже) это учебник . Так как это XNA, вторая ссылка будет прямо на вашей улице.

Edit (Content from breaked ссылки) :

Уравнения строк: Pa = P1 + ua (P2 - P1) и Pb = P3 + ub (P4 - P3)

Решение для точки, где Pa = Pb дает следующие два уравнения в двух неизвестных (ua и u x1 + ua (x2 - x1) = x3 + ub (x4 - x3) и y1 + ua (y2 - y1) = y3 + ub (y4 - y3) Решение дает следующие выражения для ua и ub

Подстановка любого из них в соответствующее уравнение для линии дает точку пересечения. Например, точка пересечения (x, y) x = x1 + ua (x2 - x1) y = y1 + ua (y2 - y1)

Примечания: Знаменатели для уравнений для ua и ub одинаковы. Если знаменатель для уравнений ua и ub равен 0, то две прямые параллельны. Если знаменатель и числитель для уравнений ua и ub равны 0, то две строки совпадают. Уравнения применяются к линиям, если требуется пересечение отрезков линий, то необходимо только проверить, лежат ли ua и ub между 0 и 1. В зависимости от того, какой из них находится в пределах этого диапазона, соответствующий отрезок линии содержит точку пересечения. Если оба находятся в диапазоне от 0 до 1, то точка пересечения находится в обоих отрезках.

6
ответ дан 5 December 2019 в 18:59
поделиться

По этой теме есть учебное пособие (пересечение отрезков линии).

3
ответ дан 5 December 2019 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: