POJ 1269 Intersecting Lines

题目链接:http://poj.org/problem?id=1269

题目大意:题目给出四个点,前面两点和后面两点共确定两条直线,判断两条直线共线、平行、交点。

代码:
#include<iostream>
#include<cstdio>
using namespace std;
typedef struct{///点(x,y)
    int x,y;
}Point;

typedef struct{///直线 ax+by+c=0
    int a,b,c;
}Line;

int JugLine(int x1,int y1,int x2,int y2){
    return x1*y2-x2*y1;
    ///结果为0时,向量平行
    ///非0,可以作为组成平行四边形面积
}

Line lineform(Point a,Point b){
    Line t;
    t.a=b.y-a.y;
    t.b=a.x-b.x;
    t.c=b.x*a.y-a.x*b.y;
    return t;///返回两点构成的直线
}

double x,y;///两直线交点(x,y)
void lineintersect(Line l1,Line l2){
    double d= l1.a * l2.b - l2.a * l1.b ;
    x = ( l2.c * l1.b - l1.c * l2.b ) / d ;
    y = ( l2.a * l1.c - l1.a * l2.c ) / d ;
}

int main(){
    int ca;
    Point p1,p2,p3,p4;
    Line l1,l2;
    scanf("%d",&ca);
    printf("INTERSECTING LINES OUTPUT\n");
    while(ca--){
        scanf("%d%d%d%d%d%d%d%d",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&p4.x,&p4.y);
        if(JugLine(p2.x-p1.x,p2.y-p1.y,p3.x-p1.x,p3.y-p1.y)==0&&JugLine(p2.x-p1.x,p2.y-p1.y,p4.x-p1.x,p4.y-p1.y)==0)
            printf("LINE\n");
        else if(JugLine(p2.x-p1.x,p2.y-p1.y,p4.x-p3.x,p4.y-p3.y)==0)
            printf("NONE\n");
        else{
            l1=lineform(p1,p2);
            l2=lineform(p3,p4);
            lineintersect(l1,l2);
            printf("POINT %.2lf %.2lf\n",x,y);
        }
    }
    printf("END OF OUTPUT\n");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值