Позволяет говорят, что мы имеем 4 Vector2
(да это является 2-м), таким образом, у нас есть lineOneStart, lineOneEnd, lineTwoStart и lineTwoEnd.
Как я могу обнаружить, если эти 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, то точка пересечения находится в обоих отрезках.
По этой теме есть учебное пособие (пересечение отрезков линии).