AS3 三角形填充

2021-07-10 04:16:28 字數 2927 閱讀 3863

//讓點按照 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 < clip.left && x3 < clip.left) ||

(x1 > clip.right && x2 > clip.right && x3 > clip.right))

var temp1:point = new point(x1, y1);

var temp2:point = new point(x2, y2);

var te***:point = new point(x3, y3);

//平頂

if(y1 == y2)

else if(y2 == y3)//平底

else

}//畫平底即底邊比頂點的y值小

public function flatbottom(p1:point, p2:point, p3:point):void

//計算斜率

var dxyleft:number = (x2 - x1)/(y2 - y1);//是通過y的增加來求x的變化率,所以是斜率的倒數

var dxyright:number = (x3 - x1)/(y3 - y1);

var xs:number = x2;

var xe:number = x3;

if(y1 > clip.bottom)

if(y3 < clip.top)

var y:int;

var x:int;

//假如x點都在裁剪區域內

if(x1 >= clip.left && x1 <= clip.right &&

x2 >= clip.left && x2 <= clip.right &&

x3 >= clip.left && x3 <= clip.right)

xs += dxyleft;

xe += dxyright;

}}else//加入有x點不在裁剪區域內則每增加一步,就要判斷x是否超出clip範圍,如果超出則對映到對應的clip邊上(當然也可以直接用這個else的所有內容,而不必寫這個if-else, 寫if-else 主要是為了讓if更快)

}if(right > clip.right)

}// drawline(new point(left, y), new point(right, y), 0x00ff00);

for(x = left; x <= right; x++)

xs += dxyleft;

xe += dxyright;}}

bmd.unlock();

} //畫平頂即底邊比頂點的y值大

public function flattop(p1:point, p2:point, p3:point):void

//計算斜率

var dxyleft:number = (x1 - x3)/(y1 - y3);//是通過y的增加來求x的變化率,所以是斜率的倒數

var dxyright:number = (x2 - x3)/(y2 - y3);

var xs:number = x3;//如果xs 或者 xe 是 int 型的話,需要加0.5 除去誤差,相當於四捨五入到整點,比如1.8 +0.5 = 2.3 ≈ 2 , 1.2 + 0.5 = 1.7 ≈ 1

var xe:number = x3;

if(y3 < clip.top)

if(y1 > clip.bottom)

var y:int;

var x:int;

//假如x點都在裁剪區域內

if(x1 >= clip.left && x1 <= clip.right &&

x2 >= clip.left && x2 <= clip.right &&

x3 >= clip.left && x3 <= clip.right)

xs += dxyleft;

xe += dxyright;

}}else

}if(right > clip.right)

}for(x = left; x <= right; x++)

xs += dxyleft;

xe += dxyright;}}

bmd.unlock();

}

三角形填充

給定三角形的三個頂點,填充三角形,想來想去,竟然找不到這樣的軟體工具。就連matlab都沒有提供這樣的繪圖功能。我有一組三角形的頂點座標,想判斷這些三角形是否可以完全拼合在一起。如果乙個乙個地去檢查每個三角形的頂點座標,那真不是人幹的活。求人不如求已,乾脆自己寫乙個windows程式吧,利用gdi來...

三角形填充演算法

這個演算法的精妙之處在於把求斜率的部分改為了插值計算,解決了浮點數的問題。整個部分並沒有直接去求直線的斜率。能用 解釋的盡量不bb,見 private function draw easy p1 point,p2 point,p3 point,color uint 0 void p3.y if p1...

css3 三角形 三角形的內切圓

直角三角形 內切圓半徑為r a b c 2 a,b為直角邊,c為斜邊 一般三角形 內切圓半徑為r 2s a b c s是三角形的面積公式 與三角形三邊都相切的圓叫做三角形的內切圓,圓心叫做三角形的內心,三角形叫做圓的外切三角形。三角形的內心是三角形三條角平分線的交點。拓展資料 三角形一定有內切圓,其...