首页 > 代码库 > 求两个一次函数的交点

求两个一次函数的交点

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;}
}

 

求两个一次函数的交点