计算机辅助应用
计算机辅助应用技术基础
姓 名:学 号:班 级:完成时间:
目 录
第一题 ………………………………………………………………………2 第二题 ………………………………………………………………………6 第三题 ………………………………………………………………………8 第四题 ………………………………………………………………………10
第一题
/**************************************************************************/ /******************************旋转的风轮**********************************/ /**************************************************************************/ /*这是一个基于OpenGL 的小程序,其绘制了几个由三角形构成的风轮。通过乘上移动、 缩放以及旋转的矩阵实现风轮在转动过程中的不同效果。 **/ /**************************************************************************/ /*作者:xx******班级:xxxxxxxx******学号:xxxxxxxxx***************/
/******************************程序代码*************************************/
#include #include
static int i =0; // 设置i 的初始值为0
void myinit(void) {
glClearColor (1.0, 0.9, 0.9, 0.0); //设置背景色 glEnable(GL_LINE_SMOOTH); }
void DrawTangle() { glBegin(GL_TRIANGLES); //绘制四个锐角顶点相对的直角三角形 glColor3f (0.0, 0.0, 1.0); //该点的RGB 颜色参数 glVertex2f(0,0); //一个顶点的坐标 glColor3f (0.0, 1.0, 0.0); glVertex2f(0,-140.0); glColor3f (1.0, 0.0, 0.0); glVertex2f(50,-140.0); glColor3f (0.0, 0.0, 1.0); glVertex2f(0,0); glColor3f (0.0, 1.0, 0.0); glVertex2f(0,140.0); glColor3f (1.0, 0.0, 0.0); glVertex2f(-50,140.0);
glColor3f (0.0, 0.0, 1.0); glVertex2f(0,0); glColor3f (0.0, 1.0, 0.0); glVertex2f(140.0,0); glColor3f (1.0, 0.0, 0.0); glVertex2f(140.0,50.0); glColor3f (0.0, 0.0, 1.0); glVertex2f(0,0); glColor3f (0.0, 1.0, 0.0); glVertex2f(-140,0.0); glColor3f (1.0, 0.0, 0.0); glVertex2f(-140.0,-50.0); glEnd(); }
void display(void) { glClear (GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); //指定“GL_MODELVIEW”矩阵为当前矩阵 glLoadIdentity(); //重置当前指定的矩阵为单位矩阵
glPolygonMode(GL_FRONT,GL_LINE); //显示模式将适用于物体的前向面, 显示线段,多边形用轮廓显示 glLoadIdentity();
glPolygonMode(GL_FRONT,GL_LINE); //显示模式将适用于物体的前向面, 显示线段,多边形用轮廓显示 glTranslatef(135.0, 135.0, 0.0); //把当前矩阵和一个表示移动物体的矩阵相乘, 三个参数分别表示了在三个坐标上的位移值。
glScalef(0.4,0.4,0.0); //把当前矩阵和一个表示缩放物体的矩阵相乘,x,y,z 分别表示在该方向上的缩放比例。 glRotatef(i/10,1.0,0.0,0.0); //把当前矩阵和一个表示旋转物体的矩阵相乘, 物体将绕着(0,0,0)到(x,y,z)的直线以逆时针旋转,参数angle 表示旋转的角度。 DrawTangle(); glLoadIdentity();
glPolygonMode(GL_FRONT,GL_LINE); glTranslatef(135.0, -135.0, 0.0); glScalef(0.4,0.4,0.0); glRotatef(i/10,0.0,0.0,1.0);
DrawTangle(); glLoadIdentity();
glPolygonMode(GL_FRONT,GL_LINE); glTranslatef(-135.0, 135.0, 0.0); glScalef(0.4,0.4,0.0); glRotatef(i/10,0.0,0.0,1.0); DrawTangle(); glLoadIdentity();
glPolygonMode(GL_FRONT,GL_LINE); glTranslatef(-135.0, -135.0, 0.0); glScalef(0.4,0.4,0.0); glRotatef(i/10,0.0,1.0,0.0); DrawTangle(); glLoadIdentity();
glPolygonMode(GL_FRONT,GL_FILL); //GL_FILL表示显示面,多边形采用填充形式 glScalef(i*0.00015,i*0.00015,0.0); glRotatef(i/20,0.0,0.0,1.0); DrawTangle(); glutSwapBuffers(); //交换两个缓冲区指针
glDisable(GL_LINE_STIPPLE); //是取消将normal (法线) 都自动变为从0 到1 的向量。 glFlush(); }
void myIdle(void) {
/* 新的函数,在空闲时调用,作用是参数i 自加1重新绘制,达到动画效果 */ ++i;
if( i >= 7200) i = 0; display(); }
void myreshape (int w, int h) {
glViewport (0,0, (GLsizei) w, (GLsizei) h); //在同一个窗口中显示分割屏幕的效果,以显示多个视图
glMatrixMode (GL_PROJECTION); //指定当前矩阵
glLoadIdentity ();
gluOrtho2D(-(GLdouble)w/2,(GLdouble)w/2,-(GLdouble)h/2,(GLdouble)h/2); //指定窗口大小 }
int main(int argc, char** argv) {
glutInit(&argc, argv); //初始化
glutInitDisplayMode (GLUT_RGB |GLUT_DOUBLE ); //指定 RGB 颜色模式的窗口和双缓存窗口
glutInitWindowSize (400, 400); //指定窗口大小 glutInitWindowPosition (200, 200);
glutCreateWindow ("xxx 旋转的风轮"); //窗口的名称为“丁虎 旋转的风轮” myinit ();
glutDisplayFunc(display); //注册一个绘图函数 glutReshapeFunc(myreshape); //绘制窗口函数
glutIdleFunc(&myIdle); //设置全局空闲回调函数
glutMainLoop(); return 0; }
程序运行结果:
第二题
在本题中用UG 软件分别绘制了活塞、连杆头部、连杆下部,曲轴、螺杆、垫片、活塞销等零件图,并进行了装配。除此之外,用PS 软件根据本人名字的首字母DH 设计了零件的标志。下面列出了装配图、标志、爆炸图及装配导航记录。
图2-1 装配图
图2-2标志
图2-3 爆炸图
图2-4 装配导航记录
第三题
该题的要求为将题2所设计的零件或部件转换成二维图,根据《机械工程CAD 制图国家标准》用AutoCAD 修改成合乎国家标准的图样,包括图框、标题栏、线条、文字与表达方法等都要求符合。将图纸打印出来,确保测量图纸打印的线性尺寸大小与所标的尺寸之比严格符合标题栏中所标的比例。并新建了多个图层,多个文字样式与多个尺寸标注样式,并截屏显示出所做的这些设置工作。
该提的图纸附于后面,下面是多个图层、文字样式及尺寸标注样式截图:
图3-1 图层管理器
图3-2 文字样式
图3-2 标注样式