謝謝我的老師,唐澤聖教授在其《計算機圖形學基礎》一書中匯出的通用bresenham畫線演算法**
/**//**
*sample to fill a trangle on 2d screen
*/
public
void
fill********(
intx1,
inty1,
intx2,
inty2,
intx3,
inty3)
...}
public
intcalculateline(
intx1,
inty1,
intx2,
inty2)
...itag=0
;dx
=math.abs(x2
-x1);dy=
math.abs(y2
-y1);
if(dx
<
dy)...tx=
(x2-
x1)>0?
1:-1
;ty
=(y2
-y1)
>0?
1:-1
;curx
=x1;
cury
=y1;
inc1=2
*dy;
inc2=2
*(dy
-dx);d=
inc1
-dx;
while
(curx
!=x2)
...else
...if
(itag
>0)
setpexel(cury,curx);
else
setpexel(curx,cury);
curx
+=tx;
}return0;
}
private
int********scanlineminmaxarrays ;
private
int********deltay;
public
void
setpexel(
intx,
inty)
...else
...else
if(x
>
********scanlineminmaxarrays[y][1])
...}}
三角形填充演算法
這個演算法的精妙之處在於把求斜率的部分改為了插值計算,解決了浮點數的問題。整個部分並沒有直接去求直線的斜率。能用 解釋的盡量不bb,見 private function draw easy p1 point,p2 point,p3 point,color uint 0 void p3.y if p1...
三角形填充
給定三角形的三個頂點,填充三角形,想來想去,竟然找不到這樣的軟體工具。就連matlab都沒有提供這樣的繪圖功能。我有一組三角形的頂點座標,想判斷這些三角形是否可以完全拼合在一起。如果乙個乙個地去檢查每個三角形的頂點座標,那真不是人幹的活。求人不如求已,乾脆自己寫乙個windows程式吧,利用gdi來...
AS3 三角形填充
讓點按照 p1 p2 p3 的y值從大到小排序 var tempx number var tempy number if y1 y2 if y1 y3 if y2 y3 如果所有定點都在裁剪區域外則不能繪圖 if y3 clip.bottom y1 clip.top x1 clip.left x2 ...