Линия пересекает прямоугольник - как найти точки пересечения?

Я рисую прямоугольник на холсте и линию от центра прямоугольника до некоторой случайной точки в координатном пространстве.

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

Как я мог это сделать?

пример

Прямоугольник может быть определен двумя точками:Pstart(1, 3), Pend(3, 1)Центральная точка может быть вычислена для:P(2, 2)Теперь нарисуйте линию отP(2, 2) вQ(10, 2).

Поскольку я знаю, что ширина прямоугольника равна 2, я могу сказать, что строка должна начинаться сP(4, 2) вместоP(2, 2).

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

Как я могу рассчитать начальное смещение для точки линии относительно центра прямоугольника и конечной точки линии?

Вероятно, мне нужно будет найти точку, где линия будет пересекать прямоугольник, а затем просто позволить линии начаться в точке пересечения. Но как я мог получить эту точку?

Ответы на вопрос(3)

Ваш ответ на вопрос