上图包含4个点,用户可以拖动任何在图像框内,我想算法(逻辑),用户绘制矩形是有效矩形或NOT.Rect应该是有效的SHAPE(梯形三角形,四边形)。什么可以找到矩形是否有效的最佳方法。
以下形状无效
答案 0 :(得分:1)
你想检查你的形状是否是四边形,特别是凸四边形(寻找concave和convex多边形)。对于您展示的两个问题,您可以使用两个测试:
对于第一种情况,您只需检查两侧之间的内角是否高于180度,即多边形是凸的。为此,请在SO中查看此question。
我不确定检查"凸性"解决了第二种情况。你应该试试。如果它没有,你需要检查四个interiror角度的总和是360度(这适用于所有四边形)。要获得两个线段之间的角度,您可以将它们转换为矢量并使用点积。顶点2处的角度为:
v_ {12} =(x2-x1,y2-y1) - >从第1点到第2点的矢量
v_ {23} =(x3-x2,y3-y2) - >从第2点到第3点的矢量
现在计算点积
v_ {12}。 v_ {23} =(x3 - x2)(x2 - x1)+(y3 - y2)(y2 - y1)
段12和23之间角度的余弦是点积除以每个矢量的模数。