/*******************************/
// 参数:
// 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;
}
}
求两线段的交点(C++)
最新推荐文章于 2023-05-30 18:34:06 发布