C++判断图像中一点是否在矩形中

需要判断出四条之间组成的矩形的范围,其中矩形的边缘可能是倾斜不平行于x或者y轴。

考虑和很久,参考博客http://blog.csdn.net/dapengbusi/article/details/50516126。

好像是个常规题此处来个表情:

 只需要判断该点是否在上下两条边和左右两条边之间就行,判断一个点是否在两条线段之间夹着,就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图:

只要判断(p1 p2 X p1 p ) * (p3 p4 X p3 p1)  >= 0 就说明p在p1p2,p3p4中间夹着,同理计算另两边就可以了

核心代码:

// 计算 |p1 p2| X |p1 p|  
float GetCross(Point p1, Point p2,Point p)  
{  
    return (p2.x - p1.x) * (p.y - p1.y) -(p.x - p1.x) * (p2.y - p1.y);  
}  

 

posted @ 2017-03-28 21:35  AZUDon  阅读(2631)  评论(0编辑  收藏  举报