
14.06.2011, 01:59
|
|
Регистрация: Mar 2010
Сообщений: 137
|
Можно записать уравнение прямой параметрически и решить относительно переменной, которое изменяется. Т.е:
X(t) = begX + (endX - begX) * t; (1)
Y(t) = begY + (endY - begY) * t; (2)
Если подставить значение координаты стороны квадрата (если стороны квадрата ориентированы по осям) По одному из уравнений можно найти t (выбираем то, в котором координата начала и конца не равны). Например, для стороны В вашего квадрата:
maxX = begX + (endX - begX) * t; => t = (maxX - begX) / (endX - begX)
, где maxX - координата Х обеих точек стороны В.
После того, как находим t, получаем координаты точки, подставив t в формулы (1,2).
Отдельно надо будет исследовать параллельность (векторное произведение) со стороной и факт попадания в сторону (пересечение может произойти за стороной).
А вообще, если одна из точек внутри квадрата, может быть ещё более красивое и быстрое решение.
|