calculate pixel coordinates for 8 equidistant points on a circle

夙愿已清 提交于 2019-12-13 06:17:09

问题


I have a circle centred at 0 with radius 80. How using python do I calculate the coordinates for 8 equidistant points around the circumference of the circle?


回答1:


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

you can simplify this some if you know you are always going to have only 8 points with something like:

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

with x being the x/y of the point 45 degrees and 80 units away from the origin




回答2:


click this pic for more clarity

in the above picture.

coordinates 1,2,3,4,5,6,7,8 are equidistant points on a circumference of circle Radius R and its centre is at X (0,0)

take the triangle XLZ , its aright angled at L ,

Let LZ = H , LY = A

    XL + LY = R => XL + A = R => XL = R-A 

since XLZ is right angled , XZ square = XL square + LZ square

                R square = (R-A) square + h square ————1

since these 8 points makes an octagon theta = 360 deg / 8 = 45 deg

tan 45 deg = h / XL = h / R-A => 1 = h/ R-A => h = R-A —————2

Z coordinates are (R-A, h) = > (h,h)

from the equations 1 and 2

R square = h square + h square => 2 h square = R square => h = R/ sqrt 2

so the coordinates at point 2 (Z) = (R/sqrt2, R/sqrt2)

remaining can be derived easily as they are just oppside

So all coordinates are

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)



来源:https://stackoverflow.com/questions/39622575/calculate-pixel-coordinates-for-8-equidistant-points-on-a-circle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!