Показать сообщение отдельно
Старый 14.06.2011, 01:59
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 8  
Ответить с цитированием
semenyakinVS

Регистрация: 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).

Отдельно надо будет исследовать параллельность (векторное произведение) со стороной и факт попадания в сторону (пересечение может произойти за стороной).

А вообще, если одна из точек внутри квадрата, может быть ещё более красивое и быстрое решение.