求两个一次函数的交点

Point2f pointIntersection(Point2f p1, Point2f p2, Point2f p3, Point2f p4)
{
    //p1,p2所在一条直线,p3,p4所在一条直线,求两条直线的交点
    //p1,p2所成的直线
    BOOL flag1=FALSE,flag2=FALSE;
    Point2f p;//存放最后的交点
    float k1,k2,b1,b2;
    if(p2.x==p1.x)//分母不能为0
    p.x=p2.x;
    else
    {
        flag1=TRUE;
        k1=(p2.y-p1.y)/(p2.x-p1.x);
        b1=p2.y-k1*p2.x;
    }
    
    //p3,p4所成的直线
    if(p4.x==p3.x)
    p.x=p3.x;
    else
    {
        flag2=TRUE;
        k2=(p4.y-p3.y)/(p4.x-p3.x);
        b2=p4.y-k2*p4.x;
    }
    
    
    //两直线的交点
    
    if(flag1==FALSE&&flag2==TRUE)
    {
         p.y=k2*p.x+b2;
         return p;
    }
    if(flag1==TRUE&&flag2==FALSE)
    {
        p.y=k1*p.x+b1;
        return p;
    }
    if(flag1==TRUE&&flag2==TRUE)
    {
        p.x=(b2-b1)/(k1-k2);
        p.y=k1*p.x+b1;
        return p;}
}

 

转载于:https://www.cnblogs.com/gaohai/p/7119071.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值