|
|
发表于 2015-4-15 18:14:15
|
显示全部楼层
设四个点的坐标为A(x1, y1), B(x2, y2),C (x3, y3),D (x4, y4)
根据几何知识,AB = (x2-x1, y2-y1),同理BC = (x3-x2, y3-y2)
CD = (x4-x3, y4-y3)
DA = (x1-x4, y1-y4)
数学条件:1、AB垂直于BC,BC垂直于CD,CD垂直于DA,有这三条可保证ABCD为矩形,
2、邻边相等即可让ABCD为正方形
python代码
- # 设已经有了a,b,c,d四个点的坐标
- import math
- # 先得到四个向量的坐标
- ab = (b[0]-a[0], b[1]-a[1])
- bc = (c[0]-b[0], c[1]-b[1])
- cd = (d[0]-c[0], d[1]-c[1])
- da = (a[0]-d[0], a[1]-d[1])
- is_rectangle = (ab[0]*bc[1]-ab[1]*bc[0]) == 0 \
- and (bc[0]*cd[1]-cd[1]*bc[0]) == 0 \
- and (cd[0]*da[1]-da[1]*cd[0]) == 0
- is_square = is_rectangle and math.sqrt(ab[0]**2+ab[1]**2) == math.sqrt(bc[0]**2+bc[1]**2)
复制代码 is_square变量是存储的就是判断结果 ,如果为正方形则为True,否则为False
纯手打,上面的代码没有运行过,但是大概意思应该表达 到了,楼主自己测试下哈
|
|