计算圆上8个等距点的像素坐标

时间:2016-09-21 17:06:55

标签: python-2.7 math trigonometry

我有一个以0为中心的圆,半径为80.如何使用python计算围绕圆周的8个等距点的坐标?

2 个答案:

答案 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个单位