В C++, в 2D, как я могу найти точку пересечения между лучом (определяемым одной точкой и вектором направления) и прямоугольником (определяемым x, y, w, h) ?Пересечение между лучом и прямоугольником
________
| |
| |
------------------| |
|________|
Это не для моделирования на основе кадра, поэтому я не совсем уверен, как решить эту проблему.
Связанный вопрос тонко отличается; линии не являются отрезками. Кроме того, это, по-видимому, особый случай, когда прямоугольник не под углом w.r.t. основная ось, т. е. это не ♢ – MSalters
@MSalters Возможно, это не точный ответ, который ему нужен, но я думаю, что думать о прямоугольнике как о четырех строках - это, безусловно, путь в 2D (до тех пор, пока ему не нужны внутренние координаты только границы/out intersect point), и это отличное место для его начала. Если у вас есть ссылка на лучшее решение, я буду рад обновить свой ответ. – Vyktor
@MSalters, и если мой словарь является правильным 'line = бесконечный сегмент линии' (или если вы хотите' line segment = строка с границами '), а проверка действительно очень проста: 'if ((((p1.x> = xx) && (p2.x <= xx)) || ((p1.x <= xx) && (p2.x> = xx))) && (((p1.y> = xy) && (p2.y <= xy)) || ((p1.y <= xy) && (p2.y> = xy))) '(Надеюсь, что я правильно понял индексы), где' p1' и 'p2' являются конечными точками прямоугольная линия и 'x' - это точка пересечения. – Vyktor