²é¿´: 307  |  »Ø¸´: 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 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 0805 316Çóµ÷¼Á +4 ´óÑ©Éî²Ø 2026-03-18 4/200 2026-03-24 17:34 by dick_runner
[¿¼ÑÐ] Ò»Ö¾Ô¸211 ³õÊÔ270·Ö Çóµ÷¼Á +5 ¹ÈÓêÉϰ¶ 2026-03-23 6/300 2026-03-24 16:32 by laoshidan
[¿¼ÑÐ] Çóµ÷¼ÁÒ»Ö¾Ô¸Î人Àí¹¤´óѧ²ÄÁϹ¤³Ì£¨085601£© +5 WW.' 2026-03-23 7/350 2026-03-24 14:50 by sprinining
[¿¼ÑÐ] 085404µç×ÓÐÅÏ¢284·ÖÇóµ÷¼Á +4 13659058978 2026-03-24 4/200 2026-03-24 12:15 by syl20081243
[¿¼ÑÐ] »·¾³Ñ§Ë¶288Çóµ÷¼Á +8 ƤƤƤ123456 2026-03-22 8/400 2026-03-23 23:47 by ÈÈÇéɳĮ
[¿¼ÑÐ] Ò»Ö¾Ô¸¹ú¿Æ¹ý³ÌËù081700£¬274Çóµ÷¼Á +3 ÈýË®ÑÐ0Ë®Á¢·½ 2026-03-23 3/150 2026-03-23 23:11 by MajorWen
[¿¼ÑÐ] 335·Ö | ²ÄÁÏÓ뻯¹¤×¨Ë¶ | GPA 4.07 | ÓпÆÑо­Àú +4 cccchenso 2026-03-23 4/200 2026-03-23 23:00 by Ðìckkk
[¿¼ÑÐ] »¯Ñ§308·ÖÇóµ÷¼Á +3 ÄãºÃÃ÷ÌìÄãºÃ 2026-03-23 3/150 2026-03-23 20:11 by macy2011
[¿¼ÑÐ] 291 Çóµ÷¼Á +4 »¯¹¤2026½ì±ÏÒµÉ 2026-03-21 5/250 2026-03-23 16:46 by »¯¹¤2026½ì±ÏÒµÉ
[¿¼ÑÐ] ½ÓÊÕ2026˶ʿµ÷¼Á(ѧ˶+ר˶) +4 allen-yin 2026-03-23 6/300 2026-03-23 15:04 by Íô£¡£¿£¡
[¿¼ÑÐ] 319Çóµ÷¼Á +4 СÁ¦Æøçæçæ 2026-03-20 4/200 2026-03-22 15:53 by ColorlessPI
[»ù½ðÉêÇë] ɽ¶«Ê¡ÃæÉÏÏîÄ¿ÏÞ¶îÆÀÉó +4 ʯÈð0426 2026-03-19 4/200 2026-03-22 08:50 by Wei_ren
[¿¼ÑÐ] Ò»Ö¾Ô¸¶«»ª´óѧ¿ØÖÆÑ§Ë¶320Çóµ÷¼Á +3 Grand777 2026-03-21 3/150 2026-03-21 19:23 by ¼òÖ®-
[¿¼ÑÐ] 302Çóµ÷¼Á +12 ºôºôºô¡£¡£¡£¡£ 2026-03-17 12/600 2026-03-21 17:29 by ColorlessPI
[¿¼ÑÐ] Çóµ÷¼Á +3 Ma_xt 2026-03-17 3/150 2026-03-21 02:05 by JourneyLucky
[¿¼ÑÐ] 308Çóµ÷¼Á +3 °¢½ã°¢½ã¼Ò°¡ 2026-03-18 3/150 2026-03-20 23:24 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ Î÷±±´óѧ £¬070300»¯Ñ§Ñ§Ë¶£¬×Ü·Ö287£¬Ë«·ÇÒ»±¾£¬Çóµ÷¼Á¡£ +4 ³¿»èÏßÓëÐǺ£ 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ ÄϾ©º½¿Õº½Ìì´óѧ´óѧ £¬080500²ÄÁÏ¿ÆÑ§Ó빤³Ìѧ˶ +5 @taotao 2026-03-20 5/250 2026-03-20 20:16 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏÀí¹¤085701»·¾³302Çóµ÷¼ÁԺУ +3 ¿ûè÷ÎÀ¶Ó 2026-03-20 3/150 2026-03-20 19:28 by zhukairuo
[¿¼ÑÐ] 085410È˹¤ÖÇÄÜר˶317Çóµ÷¼Á£¨0854¶¼¿ÉÒÔ£© +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by ²»168
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û