typedef enum {
REF_FRONTLEFT = 0,
REF_FRONTRIGHT,
REF_REARRIGHT,
REF_REARLEFT,
REF_FRONTCENTER,
REF_RIGHTCENTER,
REF_REARCENTER,
REF_LEFTCENTER,
REF_CENTER,
REF_POINT_CNT
}EReferencePoint;
typedef struct {
float x;
float y;
} Point2F;
typedef struct {
EReferencePoint en_ref_point;
Point2F xy_point;
}RefPoint_st;
typedef struct {
u_char_t size;
Point2F point_coordinate[10];
}Overlap_Points;
/*!
此部分函数主要是计算矩形相交的面积 备注:将4个点按照时钟序排列(必须是顺时针或者逆时针排序好的)
box1_refpoint : box1的参考点结构体包含为哪个参考点和其坐标(必须是按照时钟序排列)
\box2_refpoint : box1的参考点结构体包含为哪个参考点和其坐标(必须是按照时钟序排列)
box1_points : box1的四个顶点的坐标(必须是按照时钟序排列)
box2_points : box2的四个顶点的坐标(必须是按照时钟序排列)
overlap_points : 两个矩形相交的点以及某个矩形的顶点落在另一个矩形内的点集合S和个数的结构体
\return overlap_area : 相交的面积
*/
float calcuate_boxes_overlap(RefPoint_st *box1_refpoint, RefPoint_st *box2_refpoint,float *box1_points, float *box2_points, Overlap_Points *overlap_points)
{
if (box1_refpoint == NULL || box2_refpoint == NULL || box1_points == NULL || box2_points == NULL || overlap_points == NULL)
{
return 0.0f;
}
float overlap_area = 0.0f;
whether_rectangles_intersec