|
大体是判断触点是否在某一范围内,但不知polygon的num具体是什么作用,这一函数的算法是怎么判断的?
函数如下:
MMI_BOOL mmi_pen_check_inside_polygon(mmi_pen_polygon_area_struct *polygon, mmi_pen_point_struct pos)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MMI_BOOL c = MMI_FALSE;
S16 i, j;
S16 nPoints = polygon->num;
mmi_pen_point_struct *outline = polygon->points;
S16 x = pos.x;
S16 y = pos.y;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (i = 0, j = nPoints - 1; i < nPoints; j = i++) //这个循环具体在干吗???[/COLOR] {
mmi_pen_point_struct *a = &outline;
mmi_pen_point_struct *b = &outline[j];
if (((a->y <= y && y < b->y) || (b->y <= y && y < a->y)) &&
(x < (b->x - a->x) * (y - a->y) / (b->y - a->y) + a->x))
{
c = !c;
}
}
MMI_TRACE(MMI_FW_TRC_G6_FRM_DETAIL, MMI_PEN_TRC_CHECK_INSIDE_POLYGON, pos.x, pos.y,
outline[0].x, outline[0].y, outline[1].x, outline[1].y, outline[2].x, outline[2].y, outline[3].x, outline[3].y, c);
return c;
}
THS…… |
|