问答
当前位置:首页 问答 其它 inton_a_line(doubleax,doubleay,doublebx,doubleby,doublecx,doublecy){doubledx1,dy1,dx2,dy2上述代码能证明闪电共线#include#defineDELTA1e-9inton_a_line(doubleax,doubleay,doublebx,doubleby,doublecx,doublecy){doubledx1,dy1
inton_a_line(doubleax,doubleay,doublebx,doubleby,doublecx,doublecy){doubledx1,dy1,dx2,dy2上述代码能证明闪电共线#include#defineDELTA1e-9inton_a_line(doubleax,doubleay,doublebx,doubleby,doublecx,doublecy){doubledx1,dy1
更新时间:2025-06-10 20:39:25 专题:其它
问题描述:

inton_a_line(doubleax,doubleay,doublebx,doubleby,doublecx,doublecy){doubledx1,dy1,dx2,dy2

上述代码能证明闪电共线

#include

#defineDELTA1e-9

inton_a_line(doubleax,doubleay,doublebx,doubleby,doublecx,doublecy)

{

doubledx1,dy1,dx2,dy2,res;

dx1=bx-ax;dy1=by-ay;dx2=cx-bx;dy2=cy-by;res=dx1*dy2-dy2*dx1;

returnres-DELTA;

}

intsame(doublep1x,doublep1y,doublep2x,doublep2y,doubleax,doubleay,doublebx,doubleby)

{

doubledx,dy,dx1,dy1,dx2,dy2,res;

dx=bx-ax;dy=by-ay;dx1=p1x-ax;dy1=p1y-ay;dx2=p2x-bx;dy2=p2y-by;res=(dx*dy1-dy*dx1)*(dx*dy2-dy*dx2);

returnres>0;

}

intmain(){

doublepx,py,ax,ay,bx,by,cx,cy;

scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&px,&py,&ax,&ay,&bx,&by,&cx,&cy);

if(on_a_line(ax,ay,bx,by,cx,cy))printf("delegaten");elseif(!same(px,py,ax,ay,bx,by,cx,cy)||!same(px,py,bx,by,ax,ay,cx,cy)||!same(px,py,cx,cy,ax,ay,bx,by))printf("outn");

elseif(on_a_line(px,py,bx,by,cx,cy)||on_a_line(px,py,ax,ay,cx,cy)||on_a_line(px,py,ax,ay,bx,by))printf("onn");

elseprintf("inn");

return0;

}

梁尚明回答:   能.这里用到数学上的一个证明方法:若p1,p2,p3为平面上的三点,则三点共线的充要条件为向量:P1XP2=0,其中P1=p1-p2,P2=p2-p3.具体请参考相关数学教材.至于return语句为什么不返回res==0,这里主要涉及到程序所要求的精...

其它推荐

热门其它推荐