Обсуждение:Алгоритм Коэна — Сазерленда
Перейти к навигации
Перейти к поиску
В алгоритме, похоже ошибка - происходит зацикливание если не менять a(или b, в зависимости от...) на c 195.160.253.4 12:21, 14 сентября 2009 (UTC)
- Ошибки нет. a, b, c — указатели. Если вы мало знакомы с C/C++, поясняю. После присваивания
c = a
(илиc = b
),a->x
иc->x
(или, соответственно,b->x
иc->x
) — это два имени одной и той же ячейки памяти. — Tetromino 13:07, 14 сентября 2009 (UTC)
Обнаружена ошибка в реализации для 2-мерной модели.
[править код]Здравствуйте! Необходимо добавить проверку на ноль, иначе действительно возникает зацикливание. пример, к сожалению потерял, пока шел до компа с интернетом.(ситуация,когда а совпадает с нижним левым углом прямоугольника, а b выше,правее ) Что-то вроде этого: "
- define divider(_div_) ( ((_div_)!=0)?(_div_):1 )
" (использовать так: "
c->y += (a->y - b->y) * (r->x_min - c->x) / divider(a->x - b->x);
" )будет то, что нужно =) (решетка директивы может отображаться как 1. ) С уважением, Виктор 83.149.3.228 08:47, 4 июня 2011 (UTC)