Danh mục

Đồ họa máy tính : CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ SỞ part 6

Số trang: 5      Loại file: pdf      Dung lượng: 205.55 KB      Lượt xem: 10      Lượt tải: 0    
Hoai.2512

Phí tải xuống: miễn phí Tải xuống file đầy đủ (5 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Các phép biến đổi hình học sẽ làm thay đổi mô tả về tọa độ của các đối tượng, từ đó làm cho đối tượng bị thay đổi về hướng, kích thước và hình dạng. Các phép biến đổi hình học cơ sở bao gồm : tịnh tiến (translation), quay (rotation) và biến đổi tỉ lệ (scaling)
Nội dung trích xuất từ tài liệu:
Đồ họa máy tính : CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ SỞ part 6typedef struct{int yMin; // Gia tri y nho nhat cua 2 dinhfloat xIntersect; // Hoanh do giao diem cua canh & dongquetfloat dxPerScan; // Gia tri 1/mint DeltaY;}EDGE;typedef s truct{int NumEdge;EDGE aEdge[MAXEDGE];}EDGELIST;/*Dat 1 canh vao danh sach canh.Cac canh duoc sap theo thu tu giam dan cua yMin (yMin lagia tri y lon nhat cua 2 dinh 1 canh)Xu li luon truong hop dong quet di ngang qua dinh ma taido chi tinh 1 diem giao*/void PutEdgeInList(EDGELIST &EdgeList, POINT p1,POINT p2, int NextY){EDGE EdgeTmp;EdgeTmp.dxPerScan = float(p2.x-p1.x)/(p2.y-p1.y); //1/mif(p1.y < p2.y){/*Truong hop dong quet di ngang qua dinh la giao diemcua 2 canh co huong y cung tang*/if(p2.y < NextY){ p2.y--; p2.x -= EdgeTmp.dxPerScan;}EdgeTmp.yMin = p1.y;EdgeTmp.xIntersect= p1.x;EdgeTmp.DeltaY = abs(p2.y-p1.y)+1;} // ifelse{/* Truong hop dong quet di ngang qua dinh la giao diem cua 2 canh co huong y cung giam*/if(p2.y > NextY){ p2.y++; p2.x+= EdgeTmp.dxPerScan;}EdgeTmp.yMin = p2.y;EdgeTmp.xIntersect= p2.x;EdgeTmp.DeltaY = abs(p2.y-p1.y)+1;}//else// xac dinh vi tri chenint j = EdgeList.NumEdge; while((j>0) && (EdgeList.aEdge[j-1].yMin>EdgeTmp.yMin)){EdgeList.aEdge[j] = EdgeList.aEdge[j-1];j--;}// tien hanh chen dinh moi vao canhEdgeList.NumEdge++;EdgeList.aEdge[j] = EdgeTmp;} // PutEdgeInList/*Tim dinh ke tiep sao cho khong nam tren cung duong thangvoi dinh dang xet*/int FindNextY(POLYGON P, int id){int j = (id+1)%P.NumVertex;while((jreturn (P.aVertex[j].y);return 0;} // FindNextY// Tao danh sach cac canh tu polygon da chovoid M akeSortedEdge(POLYGON P, EDGELIST&EdgeList, int &TopScan, int &BottomScan){TopScan = BottomScan = P.aVertex[0].y;EdgeList.NumEdge = 0;for(int i=0; i TopScan) TopScan = P.aVertex[i+1].y;}BottomScan = EdgeList.aEdge[0].yMin;} //MakeSortedEdge// Cap nhat lai hai con tro FirstId, LastId cho biet danhsachcac canh activevoid UpdateActiveEdgeList(EDGELIST EdgeList, intyScan, int &FirstId, int &LastId){ while((FirstId while((FirstId

Tài liệu được xem nhiều: