OpenGL-创建圆,更改半径?

OpenGL-创建圆,更改半径?,opengl,python-2.6,vertex,pyglet,Opengl,Python 2.6,Vertex,Pyglet,我一定是这个星球上数学最差的人,因为我不知道如何改变这个圆的半径: 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让我有点困惑

我一定是这个星球上数学最差的人,因为我不知道如何改变这个圆的半径:

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:


澄清:这是可行的,我对为什么以及如何修改半径感兴趣。

数学:p=pr^2=p*r*r=p*r*2编程
i*2*pi/sides

合在一起:
i
=p
i*2
*2
=r^2这应该可以帮助你

这应该可以做到:)

但我会为变量选择另一个名称。余弦和正弦不完全是这些变量。 在我看来,你不需要从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_中心,Y_中心),请相应地将X_中心和Y_中心添加到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

给我一天时间,我可能会,但这有点模糊,会是什么为什么我要用2(
pr^2
)?我应该在哪里使用
P
?再看一遍,我想这只是数学原理的一个解释,但你的答案的语法让我大吃一惊。P等于(i*2*pi/siedes)这是圆的领域,你现在明白了吗?我向你和你古怪的大脑致敬:)它的工作原理就像一个时钟,我的学习速度比我自己的手快,所以谢谢你!你完全正确,for循环应该只循环通过
num(sides)
,其他任何东西都是多余的,在我的头脑中,循环产生了圆周长的度数(我知道这是不符合逻辑的,想想看):)
x = R * cos (angle) + X_centre
y = R * sin(angle)  + Y_centre