假設菜園裡面的果樹是按照平面座標系來排列的,座標系的x,y都是一系列的整數,我們這裡假設為1~10的整數。現在在這個平面系中輸入任意三點(在10,10之內)組成乙個三角形,求三角形所包圍的樹的個數(樹就是座標系的整數點)。
要求乙個點是否在三角形內部,這就需要用到三角形的有向面積計算公式了。所謂三角形的有向面積計算公式,就是指:從第一點開始,用前一點橫座標減後一點橫座標與兩座標之和的乘積求梯形面積,直到完成多邊性的封閉,得到三角形的有向面積。此時,如果求出的值是正的(s>0),則得出a->b->c為逆時針,否則為順時針。
感覺這樣很麻煩,還要求梯形的面積等,所以可以用一種更簡單的方法來求三角形的有向面積。這裡我們假設平面座標系中的三點為:a(x1,y1) b(x2,y2) c(x3,y3),那麼有向面積的公式就是(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2。如果算出來這個數字是大於0,那麼a,b,c三個點構成的三角形為逆時針的,否則為順時針的。
這裡我們假設a(3,5),b(4,1),c(1,1)來算下三角形的有向面積。根據上面的公式就有3+4+5-3-20-1=-12,再除以2得到-6。所以三角形的有向面積為-6,而且根據上面所說的正數與負數的關係,我們還可以判斷a,b,c三點是按照順時針的方向來構成這個三角形的。
那麼如何判斷乙個點是否在三角形的內部呢?其實很簡單了,我們只需要把判斷的點拿出來分別與三角形的三個頂點按照同樣的方向做有向面積比較,如果三個點要麼都不為負,要麼都不為正的話,也就說要麼三個有向面積都大於等於0,或者都小於等於0的話,那麼這個點是在三角的內部了(為什麼要說都不為負,都不為正?因為我們把在三角形線上的點也算進去了)
下面就是根據三角形的有向面積公式來求菜園樹的c**
#include #include int main(void)
if(d1<=0&&d2<=0&&d3<=0)
if(d1 == 0&&d2 == 0&&d3 == 0)}}
printf("%d",count);
return 0;
}
程式設計三角形面積公式 三角形面積公式的正確運用
小學我們學過三角形面積公式 a為三角形底邊長,h為底邊上的高 這個公式伴隨我們使用多年,但在高中的學習中,發現它很多時候有解決不了的問題,因此我們在學習正弦定理後,再得到三角形的3個面積公式 一下子出現三個面積公式,為我們求解三角形的面積或知道三角形的面積,求解其他量帶來巨大方便。但也給我們帶來新的...
用海龍公式求三角形面積
已知三角形的三條邊的邊長直接求三角形面積的公式。表示式為 s p p a p b p c 它的特點是形式漂亮,便於記憶。海龍公式 已知三條邊求面積 s p p a p b p b 開根號 其中 p a b c 2 public class 求三角形面積 class extends shape 求三角...
JSP求三角形面積
2 實驗1 60分鐘 2.1 實驗目的 計算三角形的面積 2.2 實驗任務 1 定義乙個可以輸入三角形三條邊的 html頁面 2 定義乙個可以計算三角形面積的 jsp頁面 3 顯示三角形的面積 2.3 實驗要求 1 三角形的邊必須為數字,如果三條邊沒有賦初值,則三條邊賦初值為零 2 判斷三角形的三條...