首先,假设四个点分别为 A, B, C, D
方法一
先分解为两个子问题
- 是否为平行四边形
- 是否有直角
第一问:是否为平行四边形?
这个问题又可以分解为找两组对边和求平行问题
1.1 找两组对边
1.2 判断两条边是否平行
1.1 枚举两组对边所有可能情况 {AB, CD}, {AC, BD}, {AD, BC}
1.2 平行可以用向量公式计算 (x1, y1) 与 (x2, y2) 平行即 x1y2 - x2y1 = 0
第二问:是否有直角?
垂直可以用向量公式计算 (x1, y1) 与 (x2, y2) 垂直即 x1x2 + y1y2 = 0
方法二
假设点 A(x, y),与其他三点分别符合这样的规律
x 相等, y 不等
x 不等,y 相等
x 不等,y 不等
然后两个不等的 x 相等,两个不等的 y 相等
方法三
所有点的 x 符合 aabb 模式,y 也符合
然后检验一下 ABCD 没有重复的点就可以了
方法四
根据矩形的对角线相等
先求四个点的中点 E(平均x, 平均y),然后判断它与四个点距离相等就可以了
方法五
两个向量内积为零且向量之和等于第三向量
选择 A 点出发,一共有三个向量 AB, AC, AD,满足下述三个条件之一即为矩形
如果 (AB, AC) = 0 且 AB + AC = AD
或者 (AB, AD) = 0 且 AB + AD = AC
或者 (AC, AD) = 0 且 AC + AD = AB
暂无评论