首页 > 代码库 > nefu 652 Triangle
nefu 652 Triangle
题目:给定一个三角形的三个点,然后给出第三个点,判断这个点是否在三角形内。
方法:求出三角形的面积,然后再求出测试点与三角形中每两个点组成的三角形的面积,相加之后如果等于个顶的三角形的面积,那么就是在三角形内,否则则不在。
注意:测试点出现在其中一条边上也不算在三角形内,去除这种情况的方法就是测试点与其他点构成的三角形的面积不能为0。
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; int solve(int a1,int b1,int a2,int b2,int a3,int b3) { int sum=0; sum+=a1*b2-a2*b1; sum+=a2*b3-a3*b2; sum+=a3*b1-a1*b3; return abs(sum); } int main() { int x[3],y[3],l,r; while(1) { for(int i=0;i<3;i++) cin>>x[i]>>y[i]; cin>>l>>r; if(x[0]==0&&x[1]==0&&x[2]==0&&y[0]==0&&y[1]==0&&y[2]==0&&l==0&&r==0) break; int s1=solve(x[0],y[0],x[1],y[1],x[2],y[2]); int s2=solve(x[0],y[0],x[1],y[1],l,r); int s3=solve(x[0],y[0],l,r,x[2],y[2]); int s4=solve(l,r,x[1],y[1],x[2],y[2]); if(s1==s2+s3+s4&&s2&&s3&&s4) cout<<"YES\n"; else cout<<"NO\n"; } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。