• 判直线平行,重合,直线交点——poj1269


    #include <cstdio>
    #include <cmath>
    #define db double
    using namespace std;
    const db eps=1e-6;
    const db pi = acos(-1);
    int sign(db k){
        if (k>eps) return 1; else if (k<-eps) return -1; return 0;
    }
    int cmp(db k1,db k2){return sign(k1-k2);}
    struct point{
        db x,y;
        point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
        point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
        point operator * (db k1) const{return (point){x*k1,y*k1};}
        point operator / (db k1) const{return (point){x/k1,y/k1};}
    };
    db dot(point k1,point k2){
        return k1.x*k2.x+k1.y*k2.y;
    }
    db cross(point k1,point k2){
        return k1.x*k2.y-k1.y*k2.x;
    }
    int inmid(db k1,db k2,db k3){return sign(k1-k3)*sign(k2-k3)<=0;}
    int inmid(point k1,point k2,point k3){//k3在[k1,k2]
        return inmid(k1.x,k2.x,k3.x)&&inmid(k1.y,k2.y,k3.y);
    }
    point getLL (point k1,point k2,point k3,point k4){//两直线交点
        db w1=cross(k1-k3,k4-k3),w2=cross(k4-k3,k2-k3);
        return (k1*w2+k2*w1)/(w1+w2);
    }
    bool onS(point k1,point k2,point q){//q在[k1,k2]
        return inmid(k1,k2,q)&&sign(cross(k1-q,k2-k1))==0;
    }
    int checkLL(point k1,point k2,point k3,point k4){//求两条直线是否 (平行||重合)
        return cmp(cross(k3-k1,k4-k1),cross(k3-k2,k4-k2))==0;
    }
    struct Line{
        point p[2];
    };
    
    db xl,yl,x2,y2;
    int n;
    point p[5];
    int main(){
        scanf("%d",&n);
        puts("INTERSECTING LINES OUTPUT");
        while (n--){
            for(int i=1;i<=4;i++)
                scanf("%lf%lf",&p[i].x,&p[i].y);
            
            if(checkLL(p[1],p[2],p[3],p[4])){
                if(sign(cross(p[1]-p[3],p[2]-p[3]))==0){
                    printf("LINE
    ");
                } else{
                    printf("NONE
    ");
                }
            } else{
                point tmp = getLL(p[1],p[2],p[3],p[4]);
                   printf("POINT %.2lf %.2lf
    ",tmp.x,tmp.y);
            }
        }
        printf("END OF OUTPUT
    ");
    }
  • 相关阅读:
    mxGraph
    DrawIO二次开发(一)
    关于使用Draw.io画数据库E-R图的说明
    流程图软件draw.io值得你拥有
    diagrams
    http://www.avaloniaui.net/
    Qt音视频开发1-vlc解码播放
    Codeforces Round #548 (Div. 2) D 期望dp + 莫比乌斯反演
    线程
    牛客练习赛89E-牛牛小数点【数论】
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12318959.html
Copyright © 2020-2023  润新知