版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、CADCA牌程設計圖形變換程序設計實驗一實驗要求:用任一種高級語言編寫出34種常用的二維、三維圖形基本變換程序。要求在報告中寫出具體的調(diào)試過程,并附上源程序。實驗說明:本實驗用C語言進行編程。程序功能說明:本程序為一個綜合型程序:能實現(xiàn)二維和三維的圖形的各種變換。例如,可以進行二維(或三維)圖形的比例,平移,對稱,旋轉,錯切五種變換。程序預設圖形頂點個數(shù)最多不超過50個,如果需要擴大頂點數(shù)目,直接在程序開頭的N值進行賦值。在進行旋轉變換時,預設圓周率為M值,如果需修改時,直接對程序開頭的M值進行修改。程序功能的原理是通過變換基本矩陣,實現(xiàn)對頂點不同的變換,從而實現(xiàn)對圖形的變換。調(diào)試說明:1:
2、首先把源程序家加載到VisualC+6.0中。然后進行編譯,組建,最后執(zhí)行。2: 按照執(zhí)行過程中的提示一步一步進行操作,最后輸出結果。具體步驟:1: 輸入圖形是幾維圖形。(二維或三維)2: 輸入頂點個數(shù)(小于50),然后輸入各點坐標,注意輸完一個坐標后回車后輸入下一個坐標。3:輸入變換類型,根據(jù)提示輸入代表類型的數(shù)字。接下來輸入相關變換所需要的參數(shù)。4:待各個參數(shù)輸入完畢后,回車后得到結果。程序實例:對一個三維的六方體圖形進行繞x軸旋轉45度變換。具體操作:(1)輸入維數(shù)為3;(2)輸入頂點數(shù)為6;(3)輸入各個坐標:(0,0,0),(0,1,0),(1,0,0),(0,0,1),(0,1,1
3、)(1,1,1)(4)輸入變換模式:此例是旋轉,輸入5;(5)輸入旋轉軸,此處輸入1;(6)輸入旋轉度數(shù):45。最后回車得到結果。運算結果如下圖:源程序如下:#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("請輸入頂點坐標:n");for(ii=0;ii<k;ii+)scanf("%f,%f",&bii0,&bii1);printf("請輸入變換模式:比例(1),對稱(2),錯切(3),平移(4),旋轉(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("請輸入平移坐標(x,y):");scanf("%f,%f",&i,&j);a20=i;a21=j;elseif(h=5)floatg;printf("請輸入旋轉角度(度):");scanf("%f",&g);g=M*g/180;a00=cos(g);a01=sin(g);a10=-sin(g);a11=cos(g);printf("經(jīng)過
7、變換后的坐標為: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("請輸入頂點坐標:n");for(jj=0;jj&l
8、t;q;jj+)scanf("%f,%f,%f",&cjj0,&cjj1,&cjj2);printf("請輸入變換模式:比例(1),對稱(2),錯切(3),平移(4),旋轉(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("請輸入平移坐標(x,y,z):");scanf("%f,%f,%f",&r,&s,&t);a30=r;a31=s;a32=t;elseif(h=5)inte;floatdu;printf("請輸入旋轉軸,x軸(1),y軸(2),z軸(3):");scanf("%d",&e);printf("請輸入旋轉角度(度):");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)變換后坐標為:n&quo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼師入職職業(yè)發(fā)展規(guī)劃
- 初中理論考試題庫及答案
- 管理制度考試題庫及答案
- 2025-2026人教版初中三年級語文上學期測試卷
- 腸道菌群與代謝性腎病進展的關聯(lián)
- 《保溫集裝箱用反射隔熱涂料(征求意見稿)》編制說明
- 腸內(nèi)腸外營養(yǎng)支持技術的優(yōu)化策略
- 中醫(yī)藥衛(wèi)生應急制度
- 一次性衛(wèi)生用品管理制度
- 衛(wèi)生院合同業(yè)務內(nèi)控制度
- 2025年大學生物(細胞結構與功能)試題及答案
- 2026年張家界航空工業(yè)職業(yè)技術學院高職單招職業(yè)適應性測試參考題庫含答案解析
- 氮氣安全技術說明書
- GB/T 17642-2025土工合成材料非織造布復合土工膜
- GB/T 45133-2025氣體分析混合氣體組成的測定基于單點和兩點校準的比較法
- 北京市行業(yè)用水定額匯編(2024年版)
- 婚內(nèi)財產(chǎn)協(xié)議書標準版
- 基于大數(shù)據(jù)的金融風險評估模型構建
- 供應鏈與生產(chǎn)制造L1-L4級高階流程規(guī)劃框架 相關兩份資料
- 國際貿(mào)易合同履行中的運輸保險索賠程序與操作指南
- 運動系統(tǒng)疾病
評論
0/150
提交評論