OpenGL实现绕轴旋转

该博客介绍了如何使用OpenGL实现3D模型中机械臂的关节旋转。通过键盘选择关节,利用ArmsDegree数组存储关节角度,修改特定关节的颜色进行高亮,并在OnKeyDown事件中更新关节的旋转角度,完成关节的动态旋转效果。注意防止未初始化的selectNum导致数组越界,并确保在绘制整体机械臂时恢复其原始颜色。
摘要由CSDN通过智能技术生成

首先要进行旋转,要生成对应的简易3d模型,这里使用的是老师的机械臂代码。

void CSphereView::Display()
{
	GLUquadricObj* quad_obj = NULL;
	if (quad_obj == NULL) quad_obj = gluNewQuadric();
	gluQuadricDrawStyle(quad_obj, GLU_LINE);
	gluQuadricNormals(quad_obj, GLU_SMOOTH);

	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 1.0, 1.0);
	glLoadIdentity();

	//view
	gluLookAt(-2.0, -1.0, 20.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
	glPushMatrix();

	//the first joint
	if (selectedNum == 1) { glColor3f(1, 0, 0); }
	else { glColor3f(1, 1, 1); }
	gluSphere(quad_obj, 1.0f, 20, 20);

	//the first degree
	glRotated(armsDegree[0].xy, 0, 0, 1);
	glRotated(armsDegree[0].yz, 1, 0, 0);
	glRotated(armsDegree[0].xz, 0, 0, 1);
	glPushMatrix();

	//draw the first arm
	glPushMatrix();
	glColor3f(1, 1, 1);
	glTranslated(6, 0, 0);
	glScaled(10, 2, 2);
	DrawUnitCube();
	glPopMatrix();

	//draw the second joint
	glTranslated(11.8, 0, 0);
	glPushMatrix();
	if (selectedNum ==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值