zoukankan      html  css  js  c++  java
  • Intersecting Lines POJ 1269

    题目大意:给出两条直线,每个直线上的两点,求这两条直线的位置关系:共线,平行,或相交,相交输出交点。

    题目思路:主要在于求交点

    F0(X)=a0x+b0y+c0==0;

    F1(X)=a1x+b1y+c1==0;

    设点(x0,y0)(x1,y1)过直线

    解方程:a=y1-y0,b=x0-x1,c=x1y0-x0y1;

    联立方程:

    X=(b0c1-b1c0)/d;

    Y=(a0c1-a1c0)/d;

    d=a0b1-a1b0;

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<vector>
    #include<stdio.h>
    #include<stdlib.h>
    #include<queue>
    #include<math.h>
    #include<map>
    #define INF 0x3f3f3f3f
    #define MAX 100005
    #define Temp 1000000000
    #define MOD 1000000007
    
    using namespace std;
    
    int n;
    
    int check(int x1,int y1,int x2,int y2,int x3,int y3)//叉积
    {
        return (x3-x2)*(y3-y1)-(x3-x1)*(y3-y2);
    }
    
    void Point(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4)
    {
        int b0=x2-x1;
        int b1=x4-x3;
        int a0=y1-y2;
        int a1=y3-y4;
        int c0=x1*y2-x2*y1;
        int c1=x3*y4-x4*y3;
        int d=a0*b1-a1*b0;
        double X=(b0*c1-b1*c0*1.0)/d;
        double Y=(a1*c0-a0*c1*1.0)/d;
        printf("POINT %.2f %.2f
    ",X,Y);
    }
    
    void solve(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4)
    {
        if(check(x1,y1,x2,y2,x3,y3)==0 && check(x1,y1,x2,y2,x4,y4)==0)
            printf("LINE
    ");//共线
        else if((y2-y1)*(x3-x4) == (y3-y4)*(x2-x1))
            printf("NONE
    ");//平行
        else
            Point(x1,y1,x2,y2,x3,y3,x4,y4);
    }
    
    int main()
    {
        int n,x1,y1,x2,y2,x3,y3,x4,y4;
        scanf("%d",&n);
        printf("INTERSECTING LINES OUTPUT
    ");
        for(int i=0; i<n; i++)
        {
            scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
            solve(x1,y1,x2,y2,x3,y3,x4,y4);
        }
        printf("END OF OUTPUT
    ");
        return 0;
    View Code
  • 相关阅读:
    ES6新特性
    浏览器兼容问题
    跨域
    箭头函数与普通函数的区别
    单页面应用
    vue试题
    Git 常用命令
    【分享代码】一个笨办法获取容器的剩余内存
    【笔记】thanos receiver的router模式
    【分享】让prometheus支持PUSH模式,可以使用remote write协议推送数据
  • 原文地址:https://www.cnblogs.com/alan-W/p/5980350.html
Copyright © 2011-2022 走看看