本文,用opencv,在图片里面画正多边形。
工具/原料
1
电脑
2
python
方法/步骤
1
平面上的旋转,可以用旋转矩阵左乘来实现,所以,先给出旋转矩阵:def xzjz(angle): a=angle*np.pi/180 A=np.array([[np.cos(a),-np.sin(a)], [np.sin(a),np.cos(a)]]) return A比如,旋转60°的旋转矩阵是:
2
用旋转矩阵可以实现旋转:def xz(pt1,pt2,angle): pt1=np.array(pt1) pt2=np.array(pt2) vector0=pt2-pt1 A=xzjz(angle) pt=np.dot(A,vector0) return pt+pt2返回的是pt1绕pt2旋转之后,得到的点的坐标。
3
连续旋转n-1次,可以获得正n边形的n个顶点:def zdbx(pt1,pt2,n): pt1=np.array(pt1) pt2=np.array(pt2) angle=360/n A=[pt1,pt2] for i in range(n-1): pt=xz(pt1,pt2,angle) pt1=pt2 pt2=pt A.append(np.int32(pt)) return np.array(A)比如,正方形的四个定点后面再重复写第一个顶点,连接起来是一个封闭的正方形。
4
以画布中心为坐标原点,画指定的正多边形。
5
plotzdbx(img,(0,0),(100,0),6)
6
绕画布中心旋转的正多边形。
上一篇:PPT如何做出正多边形
下一篇:几何图霸如何绘制圆内接正多边形