以上图像包含4个点,用户可以将其拖动到图像框内的任何位置。我需要一种算法(逻辑),能够判断用户所画矩形是否为有效矩形。该矩形应为有效形状(梯形、三角形、四边形)。最佳方法是什么以确定矩形是否为有效形状。
以下图形为无效形状:
以上图像包含4个点,用户可以将其拖动到图像框内的任何位置。我需要一种算法(逻辑),能够判断用户所画矩形是否为有效矩形。该矩形应为有效形状(梯形、三角形、四边形)。最佳方法是什么以确定矩形是否为有效形状。
以下图形为无效形状:
您想检查您的形状是否为四边形,特别是凸四边形(查找凹多边形和凸多边形)。对于您展示的两个问题,您可以使用两个测试:
对于第一个情况,您只需要检查两条边之间没有内角大于180度,即您的多边形是凸多边形。要做到这一点,请查看SO中的问题。
我不确定检查“凸性”是否解决了第二种情况。您应该尝试。如果不行,您需要检查四个内角之和是否为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之间夹角的余弦值是点积除以每个向量的模。