Цифровий диференціальний аналізатор


Алгоритм Цифровий диференціальний аналізатор (англ. DDA - Digital Differential Analyzer) будує 8-зв'язну лінію.

Для початку, нехай P1 = (0, 1); P2 = (1, 1). Для визначення того, який з пкселів, - P1 або P2, - варто зафарбувати, зрівняємо відстані до них. У силу подоби трикутників, утворених перетинанням відрізка, що малюється, прямій x = 1 і перпендикулярами з P1 і P2 на відрізок (див. мал. 6.4), досить зрівняти e (ординату перетинання відрізка c прямій x = 1) с. Далі, для наступного кроку алгоритм працює аналогічно з урахуванням зміни e - ординати перетинання відрізка з наступної вертикальної прямої .

 

Рис. 6.4. Цифровий диференціальний аналізатор.

// Координати кінців відрізка - (0,0) і (a,b) e = b/a; // Поточна ордината?e = b/a; // Збільшення ординати // (x,y) - Координати поточної крапкиx = 0; y = 0; while( x < a ){ plot(x, y); if( e > 1/2 ) { // d : діагональний зсув x++; y++; // т.к. відбувся зсув по y на 1 нагору e += ?e - 1; } else { // s : горизонтальний зсув x++; e += ?e; }}

Лістинг 6.1. Цифровий диференціальний аналізатор

Недоліком даного алгоритму є те, що він працює із числами із плаваючою крапкою.