用C语言判断点与三角形的位置关系Description 读入一点的坐标和三角形的顶点坐标,判断该点在三角形内,在三角形边界上,还是在边界之外.Input 4个点坐标,每个一行.Output 点在三角形内,输出In 点
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 05:29:49
用C语言判断点与三角形的位置关系Description 读入一点的坐标和三角形的顶点坐标,判断该点在三角形内,在三角形边界上,还是在边界之外.Input 4个点坐标,每个一行.Output 点在三角形内,输出In 点
用C语言判断点与三角形的位置关系
Description
读入一点的坐标和三角形的顶点坐标,判断该点在三角形内,在三角形边界上,还是在边界之外.
Input
4个点坐标,每个一行.
Output
点在三角形内,输出In
点在三角形边上,输出On
点在三角形外,输出Out
Sample Input
0 0
-1 0
1 0
0 1
Sample Output
On
*
*
*
这道题我做的是
#include
#include
main()
{
double Dx,Dy,Ax,Ay,Bx,By,Cx,Cy,p,p1,p2,p3,AB,AC,BC,DA,DB,DC,Sabc,Sabcd;
scanf("%d%d",&Dx,&Dy);
scanf("%d%d",&Ax,&Ay);
scanf("%d%d",&Bx,&By);
scanf("%d%d",&Cx,&Cy);
AB=sqrt((Ax-Bx)*(Ax-Bx)+(Ay-By)*(Ay-By));
BC=sqrt((Cx-Bx)*(Cx-Bx)+(Cy-By)*(Cy-By));
AC=sqrt((Ax-Cx)*(Ax-Cx)+(Ay-Cy)*(Ay-Cy));
DA=sqrt((Ax-Dx)*(Ax-Dx)+(Ay-Dy)*(Ay-Dy));
DB=sqrt((Bx-Dx)*(Bx-Dx)+(By-Dy)*(By-Dy));
DC=sqrt((Bx-Dx)*(Bx-Dx)+(By-Dy)*(By-Dy));
p=(AB+BC+AC)/2;
p1=(AC+DC+DA)/2;
p2=(AB+DB+DA)/2;
p3=(BC+DC+DB)/2;
Sabc=sqrt(p*(p-AB)*(p-BC)*(p-AC));
Sabcd=sqrt(p1*(p1-AC)*(p1-DC)*(p1-DA))+sqrt(p2*(p2-AB)*(p2-DB)*(p2-DA))+sqrt(p3*(p3-BC)*(p3-DC)*(p3-DB));
if((Dy-Cy)*(Ax-Cx)==(Dx-Cx)*(Ay-Cy)||(Dy-Cy)*(Bx-Cx)==(Dx-Cx)*(By-Cy)||(Dy-Ay)*(Bx-Ax)==(Dx-Ax)*(By-Ay))
{
if(abs(Sabcd,Sabc)
用C语言判断点与三角形的位置关系Description 读入一点的坐标和三角形的顶点坐标,判断该点在三角形内,在三角形边界上,还是在边界之外.Input 4个点坐标,每个一行.Output 点在三角形内,输出In 点
是逻辑错误还是语句错误啊?
是语句错误的话麻烦把错误内容发上来.
如果是逻辑错误的话,我不明白你那个Sabcd是做什么的,
在代码段
if(abs(Sabcd,Sabc)