版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 最新 掃描線算法代碼#include#include#include stdlib.hvoid init (void)glClearColor (1.0, 1.0, 1.0, 0.0); /指定清空顏色 (背景色)為白色glMatrixMode (GL_PROJECTION); / 指定投影矩陣gluOrtho2D (0.0, 400.0, 0.0, 400.0); /指定二維坐標系中被顯示的區(qū)域typedef struct tEdge int yUpper;float xIntersect, dxPerScan;struct tEdge * next; Edge;struct dcPt /
2、dcPt實際上是一個點的結構體 int x;int y;void setPixel(GLint x, GLint y) glBegin(GL_POINTS);glVertex2i(x, y);glEnd();/* Inserts edge into list in order of increasing xIntersect field.*/ void insertEdge (Edge * list, Edge * edge) Edge * p, * q = list; p = q-next;while (p != NULL) if (edge-xIntersect xIntersect)p
3、= NULL;else q = p; p = p-next;edge-next = q-next; q-next = edge;/* For an index, return y-coordinate of next nonhorizontal line */ int yNext (int k, int cnt, dcPt * pts) int j;if (k+1) (cnt-1)j = 0;else j = k + 1;while (ptsk.y = ptsj.y)if (j+1) (cnt-1)j = 0;elsej+;return (ptsj.y);/* Store lower-y co
4、ordinate and inverse slope for each edge. Adjust and storeupper-y coordinate for edges that are the lower member of a monotically increasing ordecreasing pair of edges */void makeEdgeRec(dcPt lower, dcPt upper, int yComp, Edge * edge, Edge * edges) edge-dxPerScan =(float) (upper.x - lower.x) / (uppe
5、r.y - lower.y); edge-xIntersect = lower.x;if (upper.y yUpper = upper.y - 1;elseedge-yUpper = upper.y;insertEdge (edgeslower.y, edge); void buildEdgeList (int cnt, dcPt * pts, Edge * edges) Edge *edge;dcPt v1, v2;int i, yPrev = ptscnt - 2.y;v1.x = ptscnt-1.x; v1.y = ptscnt-1.y; for (i=0; icnt; i+) v2
6、 = ptsi;if (v1.y != v2.y) /* nonhorizontal line */ edge=(Edge *) malloc (sizeof (Edge);if (v1.y next;while (p) q = p-next; insertEdge (active, p);p = q;void fillScan (int scan, Edge * active) Edge * p1, * p2;int i;p1 = active-next;while (p1) p2 = p1-next;for (i=p1-xIntersect; ixIntersect; i+)setPixe
7、l (int) i, scan);p1 = p2-next;void deleteAfter (Edge * q) Edge * p = q-next;q-next = p-next;free (p);/* Delete completed edges. Update xIntersect field for others */ void updateActiveList (int scan, Edge * active) Edge * q = active, * p = active-next;while (p)if (scan = p-yUpper) p = p-next; deleteA
8、fter (q);else p-xIntersect = p-xIntersect + p-dxPerScan; q = p;p = p-next;void resortActiveList (Edge * active) Edge * q, * p = active-next;active-next = NULL;while (p) q = p-next;insertEdge (active, p);p = q;void scanFill (int cnt, dcPt * pts)Edge *edges400, * active;int i, scan;for (i=0; inext = N
9、ULL;buildEdgeList (cnt, pts, edges);active = (Edge *) malloc (sizeof (Edge); active-next = NULL;for (scan=0; scannext) fillScan (scan, active); updateActiveList (scan, active);resortActiveList (active);/* Free edge records that have been malloced . */ void myDisplay (void)glClear (GL_COLOR_BUFFER_BI
10、T); / 清空顯示窗口 glColor3f (1.0, 0.0, 0.0); / 指定前景色 (當前繪制顏色 ) 為藍色dcPt pts = 250,50,550,150,550,400,250,250,100,350,100,100,120,30; glBegin(GL_LINES);glVertex2i(180,15); /Specify line-segment geometry.glVertex2i(10,145);glEnd();scanFill (7,pts);glFlush ( ); /使繪制立即反映到屏幕上 void main(int argc, char *argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶市2025屆高三第一次學業(yè)質量調研抽測化學試題 (含答案)
- 四川省瀘州市江陽區(qū)瀘州老窖天府中學2024-2025學年九年級上學期1月期末化學試卷(含答案)
- 湖北省部分市州2024-2025學年高二年級(上)期末質量監(jiān)測數學試題(含答案)
- 安徽省阜陽市臨泉第二中學2024-2025學年高三上學期12月月考政治試題(含答案)
- 語文-山東省濰坊市、臨沂市2024-2025學年度2025屆高三上學期期末質量檢測試題和答案
- 2024建筑門窗幕墻專業(yè)分包合同模板
- 2024貨物運輸長期合同范本格式
- 2024酒店屋頂花園建設承包合同
- 2024適用型房產交易協議樣本版B版
- 福建省南平市建陽縣回龍中學2021-2022學年高三物理下學期期末試卷含解析
- 簡支箱梁橋畢業(yè)設計
- 監(jiān)理安全安全通知書(春節(jié)假期)
- 啟明星辰天鏡網站安全監(jiān)測系統(tǒng)用戶手冊
- 2022年湖南省長沙市中考數學試題及答案解析
- FZ∕T 63006-2019 松緊帶
- 罐區(qū)自動化系統(tǒng)總體方案(31頁)ppt課件
- 迅達電梯5400超詳細故障代碼中文版
- 招投標法考試試題及答案
- 皮帶輸送機工程施工電氣安裝措施要點
- 愛人情況登記表
- 水蓄冷與冰蓄冷地比較
評論
0/150
提交評論