//讓點按照 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是三角形的面積公式 與三角形三邊都相切的圓叫做三角形的內切圓,圓心叫做三角形的內心,三角形叫做圓的外切三角形。三角形的內心是三角形三條角平分線的交點。拓展資料 三角形一定有內切圓,其...