Heim > Datenbank > MySQL-Tutorial > Hauptteil

POJ1269 判断2条直线的位置关系

WBOY
Freigeben: 2016-06-07 15:49:52
Original
1073 Leute haben es durchsucht

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。


解题思路:


先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。


 判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断, 


判断 平行:  p1p2 与 q1q2 共线 


求交点:


直线p1p2上的点 可表示为 p1+t(p2-p1) , 而交点 又在 直线q1q2上, 所以有  (q2-q1)X (p1 + t(p2-p1 ) - q1 ) =0


解得 交点 t = p1 + (   ((q2-q1) X (q1 - p1))      /(  (q2-q1) X(p2-p1)   )  *(p2-p1)     )

-----------------------------------------------------------------------
注意: double 型数据为0 不能直接==0

------------------------------------------------------------------------

叉乘不满足交换律


const double eps = 1e-8 ;

double  add(double x , double y){
        if(fabs(x+y) >t ;
     while(t--){
          p1.read() ,  p2.read() ;
          q1.read() ,  q2.read() ;
          k = twoline(p1 , p2 , q1 , q2 , interp) ;
          if(k == 1)  puts("LINE") ;
          else if(k == 2) puts("NONE") ;
          else printf("POINT %.2lf %.2lf\n" , interp.x , interp.y) ;
     }
     puts("END OF OUTPUT") ;
     return 0 ;
}
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage