计算圆上 8 个等距点的像素坐标
calculate pixel coordinates for 8 equidistant points on a circle
我有一个以 0 为中心、半径为 80 的圆。如何使用 python 计算围绕圆周的 8 个等距点的坐标?
r = 80
numPoints = 8.0
points = []
for index in range(numPoints):
points.append([r*math.cos((index*2*math.pi)/numPoints),r*math.sin((index*2*math.pi)/numPoints)])
return points
如果你知道你总是只有 8 分,你可以简化一些,比如:
r = 80
numPoints = 8
points = []
x = (r*math.sqrt(2))/2
points = [[0,r],[x,x],[r,0],[-x,x],[-r,0],[-x,-x],[0,-r],[x,-x]]
print points
x 是 x/y 点的 x/y 点 45 度,距离原点 80 个单位
click this pic for more clarity
如上图
坐标1,2,3,4,5,6,7,8为半径为R的圆周上的等距点,圆心在X(0,0)
取三角形 XLZ ,它的直角在 L ,
设 LZ = H ,
LY = A
XL + LY = R => XL + A = R => XL = R-A
因为 XLZ 是直角,所以 XZ 正方形 = XL 正方形 + LZ 正方形
R square = (R-A) square + h square ————1
因为这 8 个点构成八角形 theta = 360 度 / 8 = 45 度
tan 45 deg = h / XL = h / R-A => 1 = h/ R-A => h = R-A ——————2
Z坐标为(R-A, h) => (h,h)
从等式 1 和 2
R 方块 = h 方块 + h 方块 => 2 h 方块 = R 方块 => h = R/ sqrt 2
所以点 2 (Z) 的坐标 = (R/sqrt2, R/sqrt2)
剩下的很容易推导出来,因为它们正好在对面
所以所有坐标都是
1 (0,R)
2 (R/sqrt2,R/sqrt2)
3(右,0)
4 (-R/sqrt2, R/sqrt2)
5 (-R,0)
6 (-R/sqrt2,-R/sqrt2)
7 (0,-R)
8 (R/sqrt2, -R/sqrt2)
我有一个以 0 为中心、半径为 80 的圆。如何使用 python 计算围绕圆周的 8 个等距点的坐标?
r = 80
numPoints = 8.0
points = []
for index in range(numPoints):
points.append([r*math.cos((index*2*math.pi)/numPoints),r*math.sin((index*2*math.pi)/numPoints)])
return points
如果你知道你总是只有 8 分,你可以简化一些,比如:
r = 80
numPoints = 8
points = []
x = (r*math.sqrt(2))/2
points = [[0,r],[x,x],[r,0],[-x,x],[-r,0],[-x,-x],[0,-r],[x,-x]]
print points
x 是 x/y 点的 x/y 点 45 度,距离原点 80 个单位
click this pic for more clarity
如上图
坐标1,2,3,4,5,6,7,8为半径为R的圆周上的等距点,圆心在X(0,0)
取三角形 XLZ ,它的直角在 L ,
设 LZ = H , LY = A
XL + LY = R => XL + A = R => XL = R-A
因为 XLZ 是直角,所以 XZ 正方形 = XL 正方形 + LZ 正方形
R square = (R-A) square + h square ————1
因为这 8 个点构成八角形 theta = 360 度 / 8 = 45 度
tan 45 deg = h / XL = h / R-A => 1 = h/ R-A => h = R-A ——————2
Z坐标为(R-A, h) => (h,h)
从等式 1 和 2
R 方块 = h 方块 + h 方块 => 2 h 方块 = R 方块 => h = R/ sqrt 2
所以点 2 (Z) 的坐标 = (R/sqrt2, R/sqrt2)
剩下的很容易推导出来,因为它们正好在对面
所以所有坐标都是
1 (0,R) 2 (R/sqrt2,R/sqrt2) 3(右,0) 4 (-R/sqrt2, R/sqrt2) 5 (-R,0) 6 (-R/sqrt2,-R/sqrt2) 7 (0,-R) 8 (R/sqrt2, -R/sqrt2)