用C语言判断点与三角形的位置关系

问题描述:

用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)
1个回答 分类:综合 2014-11-11

问题解答:

我来补答
是逻辑错误还是语句错误啊?
是语句错误的话麻烦把错误内容发上来.
如果是逻辑错误的话,我不明白你那个Sabcd是做什么的,
在代码段
if(abs(Sabcd,Sabc)
再问: 不好意思,这个程序我编译,链接都是正确的,但是提交到一个测试系统里出错了(compile error)。。。 Sabcd是指点D与三角形三定点构成的三个三角形的面积和。。。 abs(Sabcd,Sabs)是判断浮点数相等的。。。
再答: 那就是逻辑正确了。 我不大明白,比如说你用VC++6.0环境运行此程序,给出的错误提示是什么?
再问: 没有错误。。
再答: 有运行结果吗? 如果在VC6.0下有结果,那可能是你那个什么测试系统和程序有些地方不兼容吧。
 
 
展开全文阅读
剩余:2000
下一页:绘图
也许感兴趣的知识