2011-10-24 54 views
0

好吧,我有一个我在opengl中绘制的齿轮(齿轮)。我在它的一侧附加了一个圆柱体,它应该模拟一个手柄(基本上,我正在模拟一个手摇钻机)。现在,当我旋转齿轮(工作)时,我希望气缸移动,就好像它连接到它。顺便提一下,齿轮的中心孔位于原点。在OpenGL中旋转(移动)一个固定的“曲柄手柄”

即我希望它在这个PIC一样工作:

http://www.uktoolcentre.co.uk/ProductImages/25133/BIG/BIG/25133.jpg

除了手柄部分将坚持直出红色位的,而不是在一个扩展。

我只是不能让我的头绕着数学,以便当我旋转齿轮,气缸移动,就好像它连接到它。

任何帮助?

回答

1

您只需确保在应用旋转后完成向“红色位”的外圆附近的点的平移。

在“经典”立即OpenGL的(这我不知道适用于您的代码),这将是这样的:

const float main_cog_radius = 1.f; 
const float crank_radius = 0.08f; 
glPushMatrix(); 
glRotatef(main_cog_angle, 0.f, 0.f, 1.f); 
draw_main_cog(main_cog_radius); 
glTranslatef(main_cog_radius - crank_radius, 0.f, 0.f); 
draw_crank(crank_radius); 
glPopMatrix(); 

这通过主COG的中心呈轴线(0,0 ,1)。

+0

感谢您的快速回复,现在就试试吧! - 是的,即时通讯使用即时模式,我认为(因为即时消息处理“旧”的方式,即状态机,而不是管道) –

+0

谢谢,这很好! –