CADCAM課程設(shè)計圖形變換程序設(shè)計_第1頁
CADCAM課程設(shè)計圖形變換程序設(shè)計_第2頁
CADCAM課程設(shè)計圖形變換程序設(shè)計_第3頁
CADCAM課程設(shè)計圖形變換程序設(shè)計_第4頁
CADCAM課程設(shè)計圖形變換程序設(shè)計_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、CADCA牌程設(shè)計圖形變換程序設(shè)計實驗一實驗要求:用任一種高級語言編寫出34種常用的二維、三維圖形基本變換程序。要求在報告中寫出具體的調(diào)試過程,并附上源程序。實驗說明:本實驗用C語言進(jìn)行編程。程序功能說明:本程序為一個綜合型程序:能實現(xiàn)二維和三維的圖形的各種變換。例如,可以進(jìn)行二維(或三維)圖形的比例,平移,對稱,旋轉(zhuǎn),錯切五種變換。程序預(yù)設(shè)圖形頂點個數(shù)最多不超過50個,如果需要擴(kuò)大頂點數(shù)目,直接在程序開頭的N值進(jìn)行賦值。在進(jìn)行旋轉(zhuǎn)變換時,預(yù)設(shè)圓周率為M值,如果需修改時,直接對程序開頭的M值進(jìn)行修改。程序功能的原理是通過變換基本矩陣,實現(xiàn)對頂點不同的變換,從而實現(xiàn)對圖形的變換。調(diào)試說明:1:

2、首先把源程序家加載到VisualC+6.0中。然后進(jìn)行編譯,組建,最后執(zhí)行。2: 按照執(zhí)行過程中的提示一步一步進(jìn)行操作,最后輸出結(jié)果。具體步驟:1: 輸入圖形是幾維圖形。(二維或三維)2: 輸入頂點個數(shù)(小于50),然后輸入各點坐標(biāo),注意輸完一個坐標(biāo)后回車后輸入下一個坐標(biāo)。3:輸入變換類型,根據(jù)提示輸入代表類型的數(shù)字。接下來輸入相關(guān)變換所需要的參數(shù)。4:待各個參數(shù)輸入完畢后,回車后得到結(jié)果。程序?qū)嵗簩σ粋€三維的六方體圖形進(jìn)行繞x軸旋轉(zhuǎn)45度變換。具體操作:(1)輸入維數(shù)為3;(2)輸入頂點數(shù)為6;(3)輸入各個坐標(biāo):(0,0,0),(0,1,0),(1,0,0),(0,0,1),(0,1,1

3、)(1,1,1)(4)輸入變換模式:此例是旋轉(zhuǎn),輸入5;(5)輸入旋轉(zhuǎn)軸,此處輸入1;(6)輸入旋轉(zhuǎn)度數(shù):45。最后回車得到結(jié)果。運算結(jié)果如下圖:源程序如下:#include<stdio.h>#include<math.h>#defineN50#defineM3.14159265voiderwei();voidsanwei();voidmain()intw;printf("請輸入是幾維圖形變換:二維或三維(3):");scanf("%d",&w);if(w=2)erwei();elseif(w=3)sanwei();voi

4、derwei()floata33=1,0,0,0,1,0,0,0,1;intii,k,h;floatbN2;printf("請輸入圖形定點個數(shù):");scanf("%d",&k);printf("請輸入頂點坐標(biāo):n");for(ii=0;ii<k;ii+)scanf("%f,%f",&bii0,&bii1);printf("請輸入變換模式:比例(1),對稱(2),錯切(3),平移(4),旋轉(zhuǎn)(5):");scanf("%d",&h);if

5、(h=1)intm,n;printf("請輸入比例因子(x,y):");scanf("%d,%d",&m,&n);a00=m;a11=n;elseif(h=2)intch;printf("請輸入對稱軸:x(1)或y(2):");scanf("%d",&ch);if(ch=1)a11=-1;if(ch=2)a00=-1;elseif(h=3)intr;floatf;printf("請輸入錯切軸x(1)或y(2)和錯切因子a(b):");scanf("%d,%f&q

6、uot;,&r,&f);if(r=1)a10=f;if(r=2)a01=f;elseif(h=4)floati,j;printf("請輸入平移坐標(biāo)(x,y):");scanf("%f,%f",&i,&j);a20=i;a21=j;elseif(h=5)floatg;printf("請輸入旋轉(zhuǎn)角度(度):");scanf("%f",&g);g=M*g/180;a00=cos(g);a01=sin(g);a10=-sin(g);a11=cos(g);printf("經(jīng)過

7、變換后的坐標(biāo)為:n");for(ii=0;ii<k;ii+)printf("%.2f,%.2fn",bii0*a00+bii1*a10+a20,bii0*a01+bii1*a11+a21);voidsanwei()floata44=1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1;floatcN3,x1,y1,z1;inth,q,jj;printf("請輸入三維圖形的頂點個數(shù):");scanf("%d",&q);printf("請輸入頂點坐標(biāo):n");for(jj=0;jj&l

8、t;q;jj+)scanf("%f,%f,%f",&cjj0,&cjj1,&cjj2);printf("請輸入變換模式:比例(1),對稱(2),錯切(3),平移(4),旋轉(zhuǎn)(5):);scanf("%d",&h);if(h=1)intl,m,n;printf("請輸入比例因子(x,y,z):");scanf("%d,%d,%d",&l,&m,&n);a00=l;a11=m;a22=n;elseif(h=2)intch;printf("請輸入

9、對稱面:xy(1),yz(2),zx(3):");scanf("%d",&ch);if(ch=1)a22=-1;if(ch=2)a00=-1;if(ch=3)a11=-1;elseif(h=3)intstr;floato,p;printf("請輸入錯切面:xy(1),yz(2),zx(3):");scanf("%d",&str);printf("請輸入錯切因子(a,b):");scanf("%f,%f",&o,&p);if(str=1)a10=o;a20

10、=p;a01=o;a21=p;if(str=2)a01=o;a21=p;a02=o;a12=p;if(str=3)a10=o;a20=p;a02=o;a12=p;elseif(h=4)floatr,s,t;printf("請輸入平移坐標(biāo)(x,y,z):");scanf("%f,%f,%f",&r,&s,&t);a30=r;a31=s;a32=t;elseif(h=5)inte;floatdu;printf("請輸入旋轉(zhuǎn)軸,x軸(1),y軸(2),z軸(3):");scanf("%d",&e);printf("請輸入旋轉(zhuǎn)角度(度):");scanf("%f",&du);du=M*du/180;if(e=1)a11=cos(du);a21=-sin(du);a12=sin(du);a22=cos(du);if(e=2)a00=cos(du);a20=-sin(du);a02=sin(du);a22=cos(du);if(e=3)a00=cos(du);a10=-sin(du);a01=sin(du);a11=cos(du);printf("經(jīng)變換后坐標(biāo)為:n&quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論