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); }
SYSU 软工数媒 欢迎交流。。。
gayhub : https://github.com/azikk