判断一个点是否在三角形内(面积法,三个点求三角形面积)
来源:互联网 发布:蚂蚁金服basic 知乎 编辑:程序博客网 时间:2024/05/10 15:03
1,。如果三角形PAB,PAC和PBC的面积之和与三角形ABC的面积相等,即可判定点P在三角形ABC内(包括在三条边上)。
#include"stdio.h"
#include"math.h"struct node
{
int x;
int y;
}no1[111],no2[1001];
double dist(int xa,int ya,int xb,int yb){
return(double)sqrt( (xa-xb)*(xa-xb)+(ya-yb)*(ya-yb) );
}
double area(node a,node b,node c) //知道三个点求三角形面积
{
double a1=dist(a.x,a.y,b.x,b.y);
double b1=dist(b.x,b.y,c.x,c.y);
double c1=dist(c.x,c.y,a.x,a.y);
double s=(a1+b1+c1)/2;
double t=(double)sqrt(s*(s-a1)*(s-b1)*(s-c1));
return t;
}
int main()
{
int n,m,i,j,k,l,num,count,tatle=1;
double sum,sum1,sum2,sum3;
while(scanf("%d %d",&n,&m)!=EOF)
{
count=0;
for(i=0;i<n;i++)
scanf("%d %d",&no1[i].x,&no1[i].y);
for(i=0;i<m;i++)
scanf("%d %d",&no2[i].x,&no2[i].y);
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n;k++)
{
num=0;
sum=area(no1[i],no1[j],no1[k]);
for(l=0;l<m;l++)
{
sum1=area(no2[l],no1[j],no1[k]);
sum2=area(no1[i],no2[l],no1[k]);
sum3=area(no1[i],no1[j],no2[l]);
if(((int)sum1+(int)sum3+(int)sum2)==(int)sum)
num++;
}
if(num%2!=0)
count++;
}
printf("Case %d: %d\n",tatle++,count);
}
return 0;
}
- 判断一个点是否在三角形内(面积法,三个点求三角形面积)
- 通过3点求三角形的有向面积,同时求点是否在三角形内
- 三角形有向面积 + 判断点是否在三角形内部
- poj 1569 Myacm Triangles 判断点在三角形内+求三角形面积
- 判断一个点是否在三角形内
- 判断一个点是否在三角形内
- 判断一个点是否在三角形内
- 判断一个点是否在三角形内
- 判断一个点是否在三角形内
- 判断一个点是否在三角形内
- 如何判断一个点是否在一个多边形内部+三角形有向面积公式
- 判断一个点是否在一个三角形内(二维)
- 判断一个点是否在一个三角形内(平面)
- 【无聊】判断一点是否在三角形内。(面积法)
- C#判断三个点是否构成三角形和某个点是否在三角形内
- 求一个圆的面积及判断一个点是否在圆内
- 求判断点是否在三角形内的最佳算法
- 5.4.3 果园里的树 // 判断点是否在圆内 三角形的有向面积,注意正负
- 对android内置的sqlLite数据库进行增、删、改、查操作
- 关于delphi中用adoquery进行模糊查询
- const修饰
- JS当中Dom实现图片的轮换
- hdu 1068 Girls and Boys 解题报告
- 判断一个点是否在三角形内(面积法,三个点求三角形面积)
- js实现图片轮换效果
- JS当中Dom实现几张图片的轮换
- 实验室人员流动
- 毕设今日学习
- poj 2184 背包变形
- 内存管理的规则
- 在ubuntu12.04上编译 android源代码(二)
- JS当中dom实现两张图片的点击轮换