用C语言判断点与三角形的位置关系
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/03 03:37:15
用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)
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)
是逻辑错误还是语句错误啊?
是语句错误的话麻烦把错误内容发上来.
如果是逻辑错误的话,我不明白你那个Sabcd是做什么的,
在代码段
if(abs(Sabcd,Sabc)
再问: 不好意思,这个程序我编译,链接都是正确的,但是提交到一个测试系统里出错了(compile error)。。。 Sabcd是指点D与三角形三定点构成的三个三角形的面积和。。。 abs(Sabcd,Sabs)是判断浮点数相等的。。。
再答: 那就是逻辑正确了。 我不大明白,比如说你用VC++6.0环境运行此程序,给出的错误提示是什么?
再问: 没有错误。。
再答: 有运行结果吗? 如果在VC6.0下有结果,那可能是你那个什么测试系统和程序有些地方不兼容吧。
是语句错误的话麻烦把错误内容发上来.
如果是逻辑错误的话,我不明白你那个Sabcd是做什么的,
在代码段
if(abs(Sabcd,Sabc)
再问: 不好意思,这个程序我编译,链接都是正确的,但是提交到一个测试系统里出错了(compile error)。。。 Sabcd是指点D与三角形三定点构成的三个三角形的面积和。。。 abs(Sabcd,Sabs)是判断浮点数相等的。。。
再答: 那就是逻辑正确了。 我不大明白,比如说你用VC++6.0环境运行此程序,给出的错误提示是什么?
再问: 没有错误。。
再答: 有运行结果吗? 如果在VC6.0下有结果,那可能是你那个什么测试系统和程序有些地方不兼容吧。
用C语言判断点与三角形的位置关系
全等三角形ACD和全等三角形ABD,且点B,D,C在同一条直线上,判断AD与BC的位置关系,并说明理由.
如图所示,三角形ADF全等于三角形CBE,且点E,B,D,F在一条直线上,判断AD与BC的位置关系,并加以证明.
如图所示,三角形ADF全等于三角形CBE,且点E,B,D,F在一条直线上,判断AD与BC的位置关系,并说明理由.
如图所示,三角形ADF全等于三角形CBE,且点E,B,D,F在一条直线上,判断AD与BS的位置关系,并加以证明.
三角形bef全等于三角形aef,c是be延长线上的一点,ed平分角aec,试判断de与ef的位置关系,并说明理由
如图所示,三角形ABC全等于三角形ABD,角DAC=90度. (1) 求角C的度数;(2)判断AB与CD的位置关系,
如图所示,三角形ABC全等于三角形ABD,角DAC=90度.(1)求角C的度数 (2)判断AB与CD的位置关系,
直线a平行于b,b平行于c,d与a相交于点M (2)判断c与d的位置关系,并说明理由
C语言 判断三角形的类型
判断圆与直线的位置关系
用c# 做 已知一点和一三角形的三点坐标,判断其位置关系 在三角形内 还是外 (面向对象的思想)