Пусть квадрат определяется угловыми точками (a, b), (a + 1, b), (a, b + 1), (a + 1, b + 1) .
Шаг 1: Проверьте, пересекает ли линия квадрат ...
(a) Замените каждую из координат 4 угловых точек, по очереди на y - mx - h .Если признак этой оценки включает как положительные, так и отрицательные условия, перейдите к шагу b.В противном случае линия не пересекает квадрат.
(b) Теперь есть два подслоя:
(b1) Случай 1: На шаге (a) у вас было три точки, для которых y - mx - h оценивается по одному знаку, а четвертая точка оценивается по другому знаку.Пусть эта 4-я точка будет некоторой (x *, y *) .Тогда точки пересечения составляют (x *, mx * + h) и ((y * -h) / m, y *) .
(b2) Случай 2: На шаге (а) у вас было две точки, для которых y - mx - h оценивается по одному знаку, а две другие точки оцениваются по другому знаку.Выберите любые две точки с одинаковым знаком, скажем, (x *, y *) и (x * + 1, y *) .Тогда точки пересечения составляют (x *, mx * + h) и (x * + 1, m (x * + 1) + h) .
Вам следует рассмотреть некоторые вырожденные случаи, когда линия касается ровно одной из четырех угловых точек, и случай, когда линия лежит ровно на одной стороне квадрата.