²é¿´: 308  |  »Ø¸´: 0
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

sdlj8051

½ð³æ (ÖøÃûдÊÖ)

[½»Á÷] Bresenham¸ßЧ»­ÏßËã·¨

Bresenham¸ßЧ»­ÏßËã·¨




»­ÏßµÄËã·¨²»ÉÙ£¬µ«Òª×÷µ½¸ßËÙ¡¢¼òµ¥²¢²»ÈÝÒס£Ð±ÂÊÏà³Ë·¨ÊÇ×î¼òµ¥µÄ·½·¨Ö®Ò»£¬µ«¼ÆËãÿ¸öµã¾ùÒª»¨·Ñ²»ÉÙʱ¼äÓÃÓڳˡ¢³ý·¨ÔËË㣻ÏÂÃæ½éÉܵÄÊÇBresenham's¸ßЧ»­ÏßËã·¨£¬¶Ôÿ¸öµãµÄ×ø±ê¼ÆËãÖ»Òª¼Ó¡¢¼õ·¨¾ÍÄÜÍê³É¡£
¼ò»¯Ëã·¨ÓÃαPascalÓïÑÔÃèÊöÈçÏ£º
procedure DrawLine(x1, y1, x2, y2: Integer);
var
x, y, DeltaX, DeltaY, HalfX, ErrorTerm, i: Integer;
begin
DeltaX := x2 - x1;
DeltaY := y2 - y1;
HalfX := (x2 - x1) shr 1;
ErrorTerm := 0;
x := x1;
y := y1;
for i:=0 to DeltaX do
begin
Plot(X, Y);
Inc(x);
ErrorTerm := ErrorTerm + DeltaY;
if ErrorTerm>HalfX then
begin
ErrorTerm := ErrorTerm - DeltaX;
Inc(y);
end;
end;
end;
Ϊ·½±ãÔĶÁ£¬ÉÏÊö³ÌÐò×÷Á˼ò»¯¡£Êµ¼Ê³ÌÐòÓ¦ÂÔ×÷ÐÞÕý£¬ÒÔ·Ö±ð´¦ÀíDeltaXÓëDeltaY±È½Ï´óС, ±ØÒªÊ±½»»»Æðʼ¡¢½áÊøµãµÈ¡£
ÐÞÕýºóµÄµÄαPascalËã·¨ÈçÏ£º
procedure DrawLine(x1, y1, x2, y2: Integer);
var
x, y, DeltaX, DeltaY, HalfCount, ErrorTerm, i, Flag: Integer;
begin
DeltaX := x2 - x1;
DeltaY := y2 - y1;

if Abs(DeltaY) begin
if DeltaX<0 then
begin
i := x1; x1 := x2; x2 := i;
i := y1; y1 := y2; y2 := i;
DeltaX := x2 - x1;
DeltaY := y2 - y1;
end;
if DeltaY<0 then Flag := -1
else Flag := 1;
DeltaY := Abs(DeltaY);
HalfCount := DeltaX shr 1;
ErrorTerm := 0;
x := x1;
y := y1;
for i:=0 to DeltaX do
begin
Plot(X, Y);
Inc(x);
ErrorTerm := ErrorTerm + DeltaY;
if ErrorTerm>HalfCount then
begin
ErrorTerm := ErrorTerm - DeltaX;
y := y + Flag;
end;
end;
end
else
begin
if DeltaY<0 then
begin
i := x1; x1 := x2; x2 := i;
i := y1; y1 := y2; y2 := i;
DeltaX := x2 - x1;
DeltaY := y2 - y1;
end;
if DeltaX<0 then Flag := -1
else Flag := 1;
DeltaX := Abs(DeltaX);
HalfCount := DeltaY shr 1;
ErrorTerm := 0;
x := x1;
y := y1;
for i:=0 to DeltaY do
begin
Plot(X, Y);
Inc(y);
ErrorTerm := ErrorTerm + DeltaX;
if ErrorTerm>HalfCount then
begin
ErrorTerm := ErrorTerm - DeltaY;
x := x + Flag;
end;
end;
end;
end;

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-16 at 07:30 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ sdlj8051 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] µ÷¼Á +4 13853210211 2026-03-24 4/200 2026-03-24 19:44 by ms629
[¿¼ÑÐ] 291Çóµ÷¼Á +3 HanBeiNingZC 2026-03-24 3/150 2026-03-24 16:34 by barlinike
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤¿¼Ñе÷¼Á +6 ‹üÈA 2026-03-22 6/300 2026-03-24 13:31 by Á¬ÑóÑóÑó
[¿¼ÑÐ] 327Çóµ÷¼Á +5 prayer13 2026-03-23 5/250 2026-03-23 22:11 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] Ò»Ö¾Ô¸ÉϺ£½»´óÉúÎïÓëҽҩר˶324·Ö£¬Çóµ÷¼Á +5 jiajunX 2026-03-22 5/250 2026-03-23 18:07 by YMUÊ©ÀÏʦ
[¿¼ÑÐ] 291 Çóµ÷¼Á +4 »¯¹¤2026½ì±ÏÒµÉ 2026-03-21 5/250 2026-03-23 16:46 by »¯¹¤2026½ì±ÏÒµÉ
[¿¼ÑÐ] ÇóÀÏʦÊÕÎÒ +3 zzh16938784 2026-03-23 3/150 2026-03-23 12:56 by ztnimte
[¿¼ÑÐ] ѰÕÒµ÷¼Á +4 ¾óǿâ? 2026-03-21 4/200 2026-03-22 16:14 by ľÍÐζ¶
[¿¼ÑÐ] 275Çóµ÷¼Á +6 shansx 2026-03-22 8/400 2026-03-22 15:27 by barlinike
[¿¼ÑÐ] 354Çóµ÷¼Á +7 Tyoumou 2026-03-18 10/500 2026-03-22 11:11 by ÈËÀ´Ê¢
[¿¼ÑÐ] 286Çóµ÷¼Á +10 Faune 2026-03-21 10/500 2026-03-21 23:34 by 314126402
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏ´ó£¬0703»¯Ñ§£¬·ÖÊý336£¬Çóµ÷¼Á +3 ÊÕµ½VS 2026-03-21 3/150 2026-03-21 18:42 by ѧԱ8dgXkO
[¿¼ÑÐ] 336Çóµ÷¼Á +5 rmc8866 2026-03-21 5/250 2026-03-21 17:24 by ѧԱ8dgXkO
[¿¼ÑÐ] 279Çóµ÷¼Á +5 ºìÒÂÒþ¹Ù 2026-03-21 5/250 2026-03-21 14:59 by lature00
[¿¼ÑÐ] Çóµ÷¼Á +6 Mqqqqqq 2026-03-19 6/300 2026-03-21 08:04 by JourneyLucky
[¿¼ÑÐ] Äϲý´óѧ²ÄÁÏר˶311·ÖÇóµ÷¼Á +6 77chaselx 2026-03-20 6/300 2026-03-21 07:24 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ Î÷±±´óѧ £¬070300»¯Ñ§Ñ§Ë¶£¬×Ü·Ö287£¬Ë«·ÇÒ»±¾£¬Çóµ÷¼Á¡£ +4 ³¿»èÏßÓëÐǺ£ 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[¿¼ÑÐ] 295¸´ÊÔµ÷¼Á +8 ¼òľChuFront 2026-03-19 8/400 2026-03-20 20:44 by zhukairuo
[¿¼ÑÐ] 085410È˹¤ÖÇÄÜר˶317Çóµ÷¼Á£¨0854¶¼¿ÉÒÔ£© +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by ²»168
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤µ÷¼Á 324·Ö +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û