求两线段的交点(C++)

/*******************************/
// 参数:
// line:     存储两条线短点的坐标值 |(x, y)对
// graveity: 交点xy坐标值
/*******************************/

void FindLineIntersection(float line[8], float *graveity)
{
    float delta = (line[2]-line[0]) *(line[5]-line[7]) - (line[4]-line[6]) *(line[3]-line[1]);

    float r = (line[4]-line[0]) *(line[5]-line[7]) - (line[4]-line[6]) *(line[5]-line[1]);
    float u = (line[2]-line[0]) *(line[5]-line[1]) - (line[4]-line[0]) *(line[3]-line[1]);
    if( delta > -1e-6 && delta > 1e-6 )
        return;

    if( (r >= -1.f && r <= 1.f) && ( u >= -1.f && u <= 1.f) )
    {
        graveity[0] = line[0] + r*(line[2] - line[0])/delta;
        graveity[1] = line[1] + r*(line[3] - line[1])/delta;
    }
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianwen0529/article/details/18815113
个人分类: 算法及解法
上一篇CString转char*
下一篇点到线段的最小距离(C++)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭