登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

miaozk2006

点滴积累与收藏:关于技术,关于生活

 
 
 

日志

 
 

求两直线交点程序 C  

2012-06-05 13:17:39|  分类: 编程-C |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

const   double   EPS                 =   1e-5;           //   计算精度 
const   int   CROSS                   =   0;                 //   两直线相交 
const   int   COLINE                 =   1;                 //   两直线共线 
const   int   PARALLEL             =   2;                 //   两直线平行 
struct   Point   {                             //   二维点或矢量 
        double   x,   y; 
        Point()   {} 
        Point(double   x0,   double   y0):   x(x0),   y(y0)   {} 
}; 
struct   Line   {                               //   二维的直线或线段 
        Point   p1,   p2; 
        Line()   {} 
        Line(Point   p10,   Point   p20):   p1(p10),   p2(p20)   {} 
}; 
inline   bool   EQ(double   x,   double   y)             //   eqaul,   x   ==   y 

        return   (fabs(x   -   y)   <   EPS); 

//   计算两条二维直线的交点,结果在参数P中返回 
//   返回值说明了两条直线的位置关系 
//   COLINE       --   共线 
//   PARALLEL   --   平行 
//   CROSS         --   相交 
int   CalCrossPoint(Line   L1,   Line   L2,   Point&   P) 

        double   A1,   B1,   C1,   A2,   B2,   C2; 
        A1   =   L1.p2.y   -   L1.p1.y; 
        B1   =   L1.p1.x   -   L1.p2.x; 
        C1   =   L1.p2.x   *   L1.p1.y   -   L1.p1.x   *   L1.p2.y; 
        A2   =   L2.p2.y   -   L2.p1.y; 
        B2   =   L2.p1.x   -   L2.p2.x; 
        C2   =   L2.p2.x   *   L2.p1.y   -   L2.p1.x   *   L2.p2.y; 
        if   (EQ(A1   *   B2,   B1   *   A2))         { 
                if   (EQ(   (A1   +   B1)   *   C2,   (A2   +   B2)   *   C1   ))   { 
                        return   COLINE; 
                }   else   { 
                        return   PARALLEL; 
                } 
        }   else   { 
                P.x   =   (B2   *   C1   -   B1   *   C2)   /   (A2   *   B1   -   A1   *   B2); 
                P.y   =   (A1   *   C2   -   A2   *   C1)   /   (A2   *   B1   -   A1   *   B2); 
                return   CROSS; 
        } 

 

 

转自:http://topic.csdn.net/t/20021217/14/1269227.html#r_8206153


  评论这张
 
阅读(1135)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018