




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)圖形學(xué)實驗報告任課教師:錢文華2016年春季學(xué)期實驗:Cohen-Sutherland直線裁剪算法實驗時間:2016年11月3日實驗地點:信息學(xué)院2204實驗?zāi)康模赫莆誄ohen-Sutherland直線裁剪算法程序代碼:#include <stdlib.h>#include <math.h>#include <iostream>#include<stdio.h>#include <Windows.h>#include <GL/GL.h>#include <glut.h>int a,b,a1,b1,pp0
2、,pq0,pp1,pq1;void setPixel(GLint x,GLint y)glBegin(GL_POINTS);glVertex2i(x,y);glEnd();void init(void)glClearColor(1.0,1.0,1.0,0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,200.0,0.0,150.0);void LineDDA(int x0,int y0,int xEnd,int yEnd)int dx = xEnd - x0;int dy = yEnd - y0;int steps,k;float xIncreme
3、nt,yIncrement,x = x0,y = y0;if(abs(dx)>abs(dy)steps = abs(dx);elsesteps = abs(dy);xIncrement = float(dx)/float(steps);yIncrement = float(dy)/float(steps);for (k = 0;k<steps;k+)x+=xIncrement;y+=yIncrement;setPixel(x,y);/裁剪class wcPt2Dpublic:GLfloat x,y;inline GLint round(const GLfloat a)return
4、GLint(a+0.5);const GLint winLeftBitCode = 0x1;const GLint winRightBitCode = 0x2;const GLint winBottomBitCode = 0x4;const GLint winTopBitCode = 0x8;inline GLint inside(GLint code)return GLint(!code);inline GLint reject(GLint code1,GLint code2)return GLint(code1&code2);inline GLint accept(GLint co
5、de1,GLint code2)return GLint(!(code1|code2);GLubyte encode(wcPt2D pt,wcPt2D winMin,wcPt2D winMax)GLubyte code = 0x00;if(pt.x<winMin.x)code = code|winLeftBitCode;if(pt.x>winMax.x)code = code|winRightBitCode;if(pt.y<winMin.y)code = code|winBottomBitCode;if(pt.y>winMax.y)code = code|winTopB
6、itCode;return(code);void swapPts(wcPt2D *p1,wcPt2D *p2)wcPt2D tmp;tmp = *p1;*p1 = *p2;*p2 = tmp;void swapCodes(GLubyte *c1,GLubyte *c2)GLubyte tmp;tmp = *c1;*c1 = *c2;*c2 = tmp;void lineClipCohSuth(wcPt2D winMin,wcPt2D winMax,wcPt2D p1,wcPt2D p2)GLubyte code1,code2;GLint done = false,plotLine = fals
7、e;GLfloat m;int x0=0;int y0=0;int x1=0;int y1=0;while(!done)code1 = encode(p1,winMin,winMax);code2 = encode(p2,winMin,winMax);if(accept(code1,code2)done = true;plotLine = true;/簡取else if(reject(code1,code2)/簡棄done = true;elseif(inside(code1)swapPts(&p1,&p2);swapCodes(&code1,&code2);i
8、f(p2.x!=p1.x)m=(p2.y-p1.y)/(p2.x-p1.x);/計算kif(code1 &winLeftBitCode)p1.y+=(winMin.x-p1.x)*m;p1.x = winMax.x;else if(code1 &winBottomBitCode)if(p2.x != p1.x)p1.x+=(winMin.y - p1.y)/m;p1.y=winMin.y;else if(code1 &winTopBitCode)if(p2.x != p1.x)p1.x +=(winMax.y - p1.y)/m;p1.y = winMax.y;/els
9、e/whileif(plotLine)LineDDA(round(p1.x),round(p1.y),round(p2.x),round(p2.y);void cutwindow(int xmin,int ymin,int xmax,int ymax)LineDDA(xmin,ymin,xmin,ymax);LineDDA(xmin,ymin,xmax,ymin);LineDDA(xmin,ymax,xmax,ymax);LineDDA(xmax,ymin,xmax,ymax);void display()/DDA演示printf("DDA演示n");glClear(GL_
10、COLOR_BUFFER_BIT);glColor3f(1.0,0.0,0.0);glBegin(GL_LINES);wcPt2D min;min.x = a;min.y = b;wcPt2D max;max.x=a1;max.y=b1;wcPt2D p1;p1.x=pp0;p1.y=pq0;wcPt2D p2;p2.x=pp1;p2.y=pq1;cutwindow(min.x,min.y,max.x,max.y);/繪制窗口lineClipCohSuth(min,max,p1,p2);glEnd();glFlush();void main(int argc,char * argv)glutI
11、nit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowPosition(500,300);glutInitWindowSize(400,300);glutCreateWindow("直線裁剪");init();printf("請輸入裁剪窗口左下角坐標(biāo)n");scanf("%d %d",&a,&b);printf("請輸入裁剪窗口右上角坐標(biāo)n");scanf("%d %d",&a1,&b1);printf("請輸入要裁剪的直線第一點坐標(biāo)n
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資料的轉(zhuǎn)讓合同15篇
- 高二班主任家長會組織計劃
- γ-干擾素釋放試驗在初治確診肺結(jié)核患者中的診斷價值及影響因素分析
- 醫(yī)院人才激勵培養(yǎng)計劃
- 工廠總經(jīng)理2025年外包管理工作計劃
- 個人月度培訓(xùn)總結(jié)
- 醫(yī)院質(zhì)量管理依法執(zhí)業(yè)培訓(xùn)計劃
- 2025幼兒園秋季課程標(biāo)準(zhǔn)計劃
- 大型公共建筑監(jiān)理合同管理的內(nèi)容及措施
- 2024-2025學(xué)年度八年級防疫健康管理計劃
- 林權(quán)林地轉(zhuǎn)租協(xié)議書
- 2025年自來水筆試題及答案
- 廣東省深圳市福田區(qū)耀華實驗學(xué)校2025年六年級下學(xué)期5月模擬預(yù)測數(shù)學(xué)試題含解析
- 2025年安徽中醫(yī)藥高等??茖W(xué)校單招職業(yè)適應(yīng)性測試題庫有答案
- 2025年山東省威海市市屬事業(yè)單位招聘(綜合類)考試筆試高頻重點模擬試卷提升(共500題附帶答案詳解)
- 成績單申請書
- 高校人事檔案數(shù)字化建設(shè)實踐調(diào)研
- 2025年高中歷史會考會考全套知識復(fù)習(xí)
- 特殊作業(yè)安全管理監(jiān)護(hù)人專項培訓(xùn)課件
- 科幻中的物理學(xué)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 全過程造價咨詢項目保密及廉政執(zhí)業(yè)措施
評論
0/150
提交評論