* * * * * * * Předpokládám existenci procedury procedure putpixel(byte c, integer y, integer x) Parametry uváďím v tomto neobvyklém pořadí aby procedura přesně odpovídala céčkové verzi (pascal a C předávají parametry v obráceném pořadí) procedure bres_line_2 (integer x1, integer y1, integer x2, integer y2, byte c) (* Tato funkce ilustruje použití 2. metody implementace * * bresenhamova algoritmu. (čtyři varianty) *) var deltax, deltay, d: integer; begin if x2 > x1 then deltax := x2 - x1; else deltax := x1 - x2; if y2 > y1 then deltax := y2 - y1; else deltax := y1 - y2; (* Trocu neohrabaný překlad operátoru ?: *) if deltax >= deltay then begin (* Řídící proměnná byla vybrána X *) if x1 > x2 then begin (* Jestli jsme v opačném směru *) x1 := x1 xor x2; x2 := x2 xor x1; x1 := x1 xor x2; y1 := y1 xor y2; y2 := y2 xor y1; y1 := y1 xor y2; end; if y2 > y1 then begin (* Přičítáme Y *) d := -(deltax shr 1); while x1 <= x2 do begin if d > 0 then begin d := d - deltax; inc(y1); end; putpixel(c, y1, x1); inc(x1); d := d + deltay; end; end; else begin (* Odčítáme Y *) d := -(deltax shr 1); while x1 <= x2 do begin if d > 0 then begin d := d - deltax; dec(y1); end; putpixel(c, y1, x1); inc(x1); d := d + deltay; end; end; end; else begin (* Řídící proměnná byla vybrána Y *) if y1 > y2 then begin (* Jestli jsme v opačném směru *) x1 := x1 xor x2; x2 := x2 xor x1; x1 := x1 xor x2; y1 := y1 xor y2; y2 := y2 xor y1; y1 := y1 xor y2; end; if x2 > x1 then begin (* Přičítáme X *) d := -(deltay shr 1); while y1 <= y2 do begin if d > 0 then begin d := d - deltay; inc(x1); end; putpixel(c, y1, x1); inc(y1); d := d + deltax; end; end; else begin (* Odčítáme Y *) d := -(deltay shr 1); while y1 <= y2 do begin if d > 0 then begin d := d - deltay; dec(x1); end; putpixel(c, y1, x1); inc(y1); d := d + deltax; end; end; end; end; (* Konec procedury *) Poznámka ke zdrojáku: Na mém počítači se nenalézá kompilátor pascalu, takže na rozdíl od céčkového zdrojáku, tenhle jsem nezkoušel, takže při přepisu mohly vzniknout překlepy. V tom případě si to asi budete muset trochu odladit. Ta céčková verze mi každopádně fungovala. - Bulb - výheň