三角形面積,三點順序

矢量積的應用:

已知三點(x1, y1),(x2, y2), (x3, y3)

|x1 - x2    y1 - y2|

|x1 - x3     y1 - y3|    < 0   就是順時針, 否則逆時針,

幾何意義

叉積的長度 |a × b| 可以解釋成以ab爲邊的平行四邊形面積。進一步就是說,混合積可以得到以abc爲邊的平行六面體體積

向量積|c|=|a×b|=|a| |b|sin<a,b>

c的長度在數值上等於以ab,夾角爲θ組成的平行四邊形的面積。

c的方向垂直於a與b所決定的平面,c的指向按右手規則從a轉向b來確定。

b×a= -a×b右手規則

三角形ABC的面積=1/2*abs(AB×AC)

三角形面積

時間限制:3000 ms  |  內存限制:65535 KB
難度:2
描述
給你三個點,表示一個三角形的三個頂點,現你的任務是求出該三角形的面積
輸入
每行是一組測試數據,有6個整數x1,y1,x2,y2,x3,y3分別表示三個點的橫縱座標。(座標值都在0到10000之間)
輸入0 0 0 0 0 0表示輸入結束
測試數據不超過10000組
輸出
輸出這三個點所代表的三角形的面積,結果精確到小數點後1位(即使是整數也要輸出一位小數位)
樣例輸入
0 0 1 1 1 3
0 1 1 0 0 0
0 0 0 0 0 0
樣例輸出
1.0
0.5
 
#include<stdio.h>
#include<stdlib.h>

int main(){

	double s;
	int x1, x2, x3, y1, y2, y3;
	while(scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3) && (x1 || x2 || x3 || y1 || y2 || y3)){
		s = (x1 - x2) * (y1 - y3) - (y1 - y2) * (x1 - x3);//按行列式理解
		s = s / 2;
		if(s < 0)
			printf("%.1f\n", -s);
		else
			printf("%.1f\n", s);
	}
	return 0;
}        

三點順序

時間限制:1000 ms  |  內存限制:65535 KB
難度:3
描述

現在給你不共線的三個點A,B,C的座標,它們一定能組成一個三角形,現在讓你判斷A,B,C是順時針給出的還是逆時針給出的?

如:

圖1:順時針給出

圖2:逆時針給出 

 

        <圖1>                   <圖2>

輸入
每行是一組測試數據,有6個整數x1,y1,x2,y2,x3,y3分別表示A,B,C三個點的橫縱座標。(座標值都在0到10000之間)
輸入0 0 0 0 0 0表示輸入結束
測試數據不超過10000組
輸出
如果這三個點是順時針給出的,請輸出1,逆時針給出則輸出0
樣例輸入
0 0 1 1 1 3
0 1 1 0 0 0
0 0 0 0 0 0
樣例輸出
0
1
 
#include<stdio.h>

int main()
{
	int x1, x2, x3, y1, y2, y3;
	while(scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3) && (x1 || x2 || x3 || y1 || y2 || y3) ){
		if(((x2 -x1)*(y3 - y2) - (x3 - x2)*(y2 - y1)) < 0)
			printf("1\n");
		else if(((x2 -x1)*(y3 - y2) - (x3 - x2)*(y2 - y1)) > 0)
			printf("0\n");
	}
	return 0;
}        



發佈了84 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章