这两个问题是在写 https://github.com/pqpo/SmartCropper 的时候遇到的,厚脸皮的求个 start !
已知四个点的坐标,如何确定这四个点分别为 左上,右上,右下,左下。主观上很容易确定,四个顶点依次相连,然后判断一下是左倾还是右倾,根据倾斜程度以 45 度作为临界点确定。
接下来是判断是否为凸四边形,这个相对容易一些,确定出顶点位置之后,对角线相连,如果另外两个顶点分别位于对角线两侧,那么这个四边形就是凸四边形。
这两个问题是在写 https://github.com/pqpo/SmartCropper 的时候遇到的,厚脸皮的求个 start !
已知四个点的坐标,如何确定这四个点分别为 左上,右上,右下,左下。主观上很容易确定,四个顶点依次相连,然后判断一下是左倾还是右倾,根据倾斜程度以 45 度作为临界点确定。
接下来是判断是否为凸四边形,这个相对容易一些,确定出顶点位置之后,对角线相连,如果另外两个顶点分别位于对角线两侧,那么这个四边形就是凸四边形。
|
ChingimAug 7, 2017 via Android
1
这是问问题吗?
|
|
em84Aug 7, 2017
2
你开始了
|
|
momocraftAug 7, 2017
3
如果这四个点是正方形 (0, 1) (1, 0) (2, 1) (1, 2) ,应该选哪个为左上?
|
|
jmc891205Aug 7, 2017
4
我来做的话我就取纵坐标最大的两个点 其中横坐标小的那个是左上 大的那个是右上
左下右下类似 |
|
QAPTEAWHAug 7, 2017
5
扫描线?
好像先要证明“左上,右上,右下,左下”确实可被定义,可能只有凸四边形能定义这个? |
|
yunkchenAug 7, 2017
6
谜底就在谜面里?
|
|
RLibAug 7, 2017
7
角点检测 goodFeaturesToTrack 或者多边形逼近 approxPolyDP,计算最小包围矩形 minAreaRect,得到一个 angle 和 4 个点,去比较下距离就得出了
|
|
RLibAug 7, 2017
8
答偏了撤回
|
|
am241Aug 7, 2017 via Android
12
求各顶点和四边形重心连线的角度,做排序
|
|
13
@RLib 是否可以这样,将 4 点作为 boundingRect 的输入计算外接矩形(非最小外接矩形),这样产生的矩形四个顶点应该是按顺序的,以确定左上为例,距离这个外接矩形左上顶点距离最近的即为左上。
|
|
willchenAug 7, 2017
14
如果是凸四边形, 任意取一点 和 剩下的 3 点构成的三角形的线段的直线 判断位置关系 是否可行?
|
|
CbdyAug 7, 2017
15
我说一个
作一个边法向量分别为(1,1),(1,-1)的平行四边形作为该多边形的外接多边形,该多边形与平行四边形的交点即为所求点。。 试试看= =# |