• poj 1269 Intersecting Lines


    呵呵呵,求一下平行,共线和相交。。。。。。。。。高(初)中数学知识。。。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #define N 1000005
     5 #define LL long long
     6 #define inf 0x3f3f3f3f
     7 #define eps 1e-8
     8 using namespace std;
     9 int n;
    10 struct point{double x,y;};
    11 struct line{point a,b;}s1,s2;
    12 struct node{
    13     double a,b,c,d;
    14 }a,b;
    15 point sub(point a, point b)
    16 {
    17     point t; t.x=a.x-b.x; t.y=a.y-b.y;
    18     return t;
    19 }
    20 double cross(point a, point b)
    21 {
    22     return a.x*b.y-a.y*b.x;
    23 }
    24 /*double turn(point p1, point p2, point p3)
    25 {
    26     return cross(sub(p2,p1),sub(p3,p1));
    27 }*/
    28 /*bool sgn(point a, point b)
    29 {
    30     if (fabs(a.x-b.x)<eps && fabs(a.y-b.y)<eps) return 0;
    31     return 1;
    32 }
    33 bool same_line(line a, line b)
    34 {
    35     if (!sgn(a.a,b.a) || !sgn(a.b,b.a) || !sgn(a.a,b.b) || !sgn(a.a,b.b)) return 0;
    36     if (fabs(turn(a.a,a.b,b.a)*turn(a.a,a.b,b.b))>eps) return 0;
    37     if (fabs(turn(b.a,b.b,a.a)*turn(b.a,b.b,a.b))>eps) return 0;
    38     return 1;
    39 }*/
    40 bool same_line()
    41 {
    42     return (fabs((a.a-a.c)*(b.b-b.d)-(a.b-a.d)*(b.a-b.c))<eps);
    43 }
    44 bool par()
    45 {
    46     /*if (fabs(cross(sub(a.a,a.b),sub(b.a,b.b)))<eps) return 1;
    47     return 0;*/
    48     return (fabs((a.c-a.a)*(b.b-a.b)-(a.d-a.b)*(b.a-a.a))<eps);
    49 }
    50 point cross_point(line a, line b)
    51 {
    52     double k1,k2,t;
    53     k1=cross(sub(a.b,b.a),sub(b.b,b.a));
    54     k2=cross(sub(b.b,b.a),sub(a.a,b.a));
    55     t=k1/(k1+k2);
    56     point ans;
    57     ans.x=a.b.x+(a.a.x-a.b.x)*t;
    58     ans.y=a.b.y+(a.a.y-a.b.y)*t;
    59     return ans;
    60 }
    61 int main()
    62 {
    63     puts("INTERSECTING LINES OUTPUT");
    64     scanf("%d",&n);
    65     while (n--)
    66     {
    67         scanf("%lf%lf%lf%lf",&s1.a.x,&s1.a.y,&s1.b.x,&s1.b.y);
    68         scanf("%lf%lf%lf%lf",&s2.a.x,&s2.a.y,&s2.b.x,&s2.b.y);
    69         a.a=s1.a.x,a.b=s1.a.y,a.c=s1.b.x,a.d=s1.b.y;
    70         b.a=s2.a.x,b.b=s2.a.y,b.c=s2.b.x,b.d=s2.b.y;
    71         if (same_line()) 
    72         {
    73             if (par())     puts("LINE");
    74                 else puts("NONE");
    75         }
    76         else  
    77         {  
    78             point ans=cross_point(s1,s2);
    79             printf("POINT %.2f %.2f
    ",ans.x,ans.y);
    80         }  
    81     }
    82     puts("END OF OUTPUT");
    83     return 0;
    84 }
  • 相关阅读:
    一、
    【2019-11-25】美好需要主动去发现
    《软件方法(上)》读书笔记
    【2019-11-24】读书让人美丽
    【2019-11-23】让别人来管理自己
    【2019-11-22】不聪明只有靠笨方法了
    【2019-11-21】要像人一样思考
    【2019-11-20】作为丈夫的反省
    【2019-11-19】基础科学的意义发现
    【2019-11-18】重新审视一下自己的思维
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6480826.html
Copyright © 2020-2023  润新知