我正在为应用程序进行 4 点图像转换。用户可以拖动每个角来创建一个有效的四边形,或者使用它的“边界框”来垂直、水平和按比例调整它的大小。
到目前为止,我的图像转换部分正在工作。但是,我很难对其施加限制,以便...
- 顶点不会相互交叉。换句话说,我不允许用户创建沙漏形状。它必须始终是四边形。
- 同样,每个角之间的角度必须大于 0。否则,顶点将排成一条直线。
- 它在此图像上具有最小尺寸。也就是说,每个角必须彼此相距一定距离,以及它们的相对线。
- 用户不能将图像“翻转”到其背面。4 个角(p1、p2、p3 和 p4)必须按顺时针顺序出现。
- 凹形风筝形状和三角形是有效的。
我想知道是否有关于这些问题的公式或论文。我目前确实有用于查找 2 条线段是否相交(以及在何处相交)以及查找一条线上与另一点最近的点的公式。我的大多数实现都不像我喜欢的那样对用户友好,因为在施加限制时角落会到处乱跳。
PS我在这个项目中使用C#,带有DirectX。但是,该应用程序仅是 2D 的。