CADCAM实验报告.doc
实 验 报 告实验课程: CAD/CAM原理及应用 学生姓名: 学 号: 专业班级: 年 月 日目 录一、 实验一 二维图形复合变换编程 二、 实验二 三次B样条曲线生成三、 实验三 CAD/CAM集成 南昌大学实验报告学生姓名: 徐馨 学 号: 5901115192 专业班级: 机制157班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验一 二维图形复合变换编程一、实验目的:1 掌握CAD图形处理的原理和方法。2 理解CAD对图形进行复合变换的过程。二、实验要求在二维模式下,将三角形绕任意点旋转角。三角形三点的坐标、旋转点坐标和旋转角度可由用户任意输入。原图形和变换后的图形必须同时显示在显示器上。三、实验设备1 计算机系统2 安装Turbo C或其他C语言集成开发工具四、实验原理1、变换原理基本旋转矩阵是相对坐标原点的,为了满足这一要求,必须先将旋转点和需要处理的图形向原点平移,使旋转点与原点重合,然后对图形进行旋转变换。旋转变换后,再将旋转点和旋转后的图形平移到旋转点。基本变换矩阵如下: cos sin 0-sin cos 00 0 1 1 0 00 1 0l m 1 平移T=旋转T=根据上述图形变换原理,对二维图形绕任意点(旋转点)旋转的复合变换矩阵M为1 0 00 1 0-x -y 1 M=cos sin 0-sin cos 00 0 1 1 0 00 1 0x y 1 2、编程基本要领1)、将显卡设置为图形模式函数为 #include(graphics.h) #include(conio.h)main( ) int driver,mode; driver=VGA; mode=VGAMED; initgraph(&driver,& mode,”);2) 画直线函数为 line(x1,y1, x2,y2)3) 4*4界矩阵相乘函数 float py44,xz44;m44 float xc(a,b) float a44,b44; int i , j,k;for(i=0;i<=3;i+) for (j=0;j<=3;j+) for(k=0;k<=3;k+) mij= mij+ aik* bkj;五、实验步骤1、在C语言集成开发工具的编辑器中输入源程序2、利用编译器编译源程序3、连接生成执行文件4、运行程序六、实验数据及处理结果clearclca=input('');b=input('');c=input('');d=input('');e=input('');f=input('');g=input('');h=input('');p=input('');x=a c e a;y=b d f b;q=(p/180)*3.14plot(x,y);hold onaxis equalaxis(-5 8 -5 8)plot(g,h,'p')M=1 0 0; 0 1 0; -g -h 1;R(:,1)=x;R(:,2)=y;R(:,3)=1%将二维坐标表示成(x,y,1)的形式%R1=M*RM1=cos(q) sin(q) 0; -sin(q) cos(q) 0; 0 0 1;R1=M*M1;%R1=MR2%M的逆矩阵inv(M)*R2M2=1 0 0 ; 0 1 0; g h 1;R2=R1*M2R3=R*R2m=a g R3(1,1) ;n=b h R3(1,2);plot(m,n,'')plot(R3(:,1),R3(:,2),'k') 南昌大学实验报告学生姓名: 徐馨 学 号: 5901115192 专业班级: 机制157班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验二 B样条曲线的生成一、实验目的:1、掌握参数化曲线曲面的原理和方法。2、理解参数化曲线曲面的基本性质,特别是B样条曲线的基本性质。3、掌握型值点和控制顶点以及控制多边形的概念,理解控制点对曲线的控制作用。二、实验要求在二维模式下,用自编程序生成三次B样条曲线。四个控制顶点的坐标可由用户任意输入。三次B样条曲线和控制多边形必须同时显示在显示器上。用户改变控制点后,曲线应同时得到调整。三、实验设备1、计算机系统2、安装Turbo C或其他C语言集成开发工具四、实验原理1、B样条曲线原理B样条曲线是一种基函数为B样条基函数的参数曲线,三次B样条参数方程如下: P(t)=( )=(t3 t2 t 1)其中参数t0,1P0、P1、P2、P3为四个控制顶点。B样条曲线是一种逼近曲线,曲线并不过任一个控制顶点。2、编程基本要领1)、将显卡设置为图形模式函数为 #include(graphics.h) #include(conio.h)main( ) int driver,mode; driver=VGA; mode=VGAMED; initgraph(&driver,& mode,”);2) 画直线函数为 line(x1,y1, x2,y2)3) 1*4界矩阵相乘函数 float py 4,xz44;m 4 float xc(a,b) float a 4,b44; int i , j,k;for(i=0;i<=3;i+) for (j=0;j<=3;j+) mi = mi + aj * bji;4)参数取值参数步长一般采用等步长,取1/n ,n为正整数。N的大小与显卡和显示精度有关。一般可取50。五、实验步骤1、在C语言集成开发工具的编辑器中输入源程序2、利用编译器编译源程序3、连接生成执行文件4、运行程序六、实验数据及处理结果clearclcx=2,3,5,6;y=2,4,4,2;t=0:0.05:1;plot(x,y);hold onaxis equalaxis(1 7 1 4.5)R(:,1)=t.3;R(:,2)=t.2;R(:,3)=t;R(:,4)=1;M=-1,3,-3,1; 3,-6,3,0; -3,3,0,0 1,0,0,0;R2=R*M;A(:,1)=x;A(:,2)=y;A(:,3)=1;%将二维坐标表示成(x,y,1)的形式R3=R2*A;plot(R3(:,1),R3(:,2),'g')text(2,2,'it(2,2)')text(3,4.2,'it(3,4)')text(5,4.2,'it(5,4)')text(6,2,'it(6,2)')