标签:
现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的?
如:
图1:顺时针给出
图2:逆时针给出
<图1> <图2>
0 0 1 1 1 3 0 1 1 0 0 0 0 0 0 0 0 0
0 1
思路:我看了一个博客,知道了判断三角形ABC是不是顺时针或者逆时针的规则。我就 写一下加深一下印象。设 A(x1,y1),B(x2,y2),C(x3,y3),向量AB=(x2,y2)-(x1,y1)= (x2-x1,y2-y1),向量AC=(x3,y3)-(x1,y1)=(x3-x1,y3-y1)
向量AB和向量AC叉积(2*2的行列式),即是|x2-x1 y2-y1 |
|x3-x1 y3-y1 | =
(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)
如果向量AB与向量AC的叉乘 >0,则三角形ABC是逆时针的。
如果向量AB与向量AC的叉乘 <0,则三角形ABC是顺时针的。
参考公式来源http://yangchuanhuahpu.blog.163.com/blog/static/186318840201222784939123/
my code:
|#include<iostream> using namespace std; int main() { int x1,y1,x2,y2,x3,y3; while(cin>>x1>>y1>>x2>>y2>>x3>>y3) { if(x1==0 &&y1==0&&x2==0&&y2==0&&x3==0&&y3==0) break; if((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)>0) cout<<"0"<<endl; else if((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)<0) cout<<"1"<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43916269