我有一个以0为中心的圆,半径为80.如何使用python计算围绕圆周的8个等距点的坐标?
答案 0 :(得分:1)
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 square = XL square + LZ square
R square = (R-A) square + h square ————1
因为这8个点使得八角形θ= 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 square = h square + h square => 2 h square = R square => h = R / sqrt 2
所以第2点(Z)的坐标=(R / sqrt2,R / sqrt2)
剩余可以很容易地得出,因为它们只是对手
所有坐标都是
1(0,R) 2(R / sqrt2,R / sqrt2) 3(R,0) 4(-R / sqrt2,R / sqrt2) 5(-R,0) 6(-R / sqrt2,-R / sqrt2) 7(0,-R) 8(R / sqrt2,-R / sqrt2)
答案 1 :(得分:0)
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是点45度的x / y和距原点80个单位