在数学方面,我必须是这个星球上最糟糕的人,因为我无法弄清楚如何改变这个圆半径:
from math import *
posx, posy = 0,0
sides = 32
glBegin(GL_POLYGON)
for i in range(100):
cosine=cos(i*2*pi/sides)+posx
sine=sin(i*2*pi/sides)+posy
glVertex2f(cosine,sine)
我不完全确定这会变成一个圆圈的原因或原因,因为*2
让我感到困惑。
请注意,这是在Python2.6中调用OpenGL库的Pyglet中完成的。
关注示例4-1 :http://fly.cc.fer.hr/~unreal/theredbook/chapter04.html
澄清:这有效,我对为什么以及如何修改半径感兴趣。
答案 0 :(得分:2)
这应该可以解决问题:)
from math import *
posx, posy = 0,0
sides = 32
radius = 1
glBegin(GL_POLYGON)
for i in range(100):
cosine= radius * cos(i*2*pi/sides) + posx
sine = radius * sin(i*2*pi/sides) + posy
glVertex2f(cosine,sine)
但我会为变量选择另一个名字。余弦和正弦并不完全是这些变量。 而且据我所知,你不需要一个从1到100的循环(或从0到99,我不擅长Python),你只需要一个从1到边的循环。
说明: 当你计算
x = cos (angle)
y = sin(angle)
你在半径为1的圆上得到一个点,并且在点(0; 0)的中心(因为sin ^ 2(角度)+ cos ^ 2(角度)= 1)。
如果你想将半径改为R,你只需将cos和sin乘以R。
x = R * cos (angle)
y = R * sin(angle)
如果您想将圆圈转移到另一个位置(例如,您希望圆圈的中心位于(X_centre,Y_centre),则相应地将X_centre和Y_xentre添加到x和y:
x = R * cos (angle) + X_centre
y = R * sin(angle) + Y_centre
当您需要在圆上循环N个点(在您的情况下为N =边)时,您应该在每次迭代时更改角度。所有这些角度应该相等,它们的总和应该是2 * pi。所以每个角度应该等于2 * pi/ N
。要获得第i个角度,请将此值乘以i:i * 2 * pi / N
。
答案 1 :(得分:0)
数学:P = pr ^ 2 = p * r * r = p * r * 2编程i*2*pi/sides
在一起:i
= p i*2
,*2
= r ^ 2这应该可以帮到你