Đồ 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
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
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ìm kiếm theo từ khóa liên quan:
Đồ họa máy tính tài liệu Đồ họa máy tính thiết kế đồ họa giới thiệu Đồ họa máy tính lý thuyết Đồ họa máy tínhGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Thiết kế đồ họa (Graphic Designer)
12 trang 538 2 0 -
Đồ án tốt nghiệp Thiết kế đồ họa: Cụm thiết kế đồ họa quảng cáo cho shop giày Denah Sneaker
39 trang 275 0 0 -
5 trang 267 2 0
-
Ý tưởng lớn trong kỹ thuật thiết kế đồ họa: Phần 1
92 trang 264 1 0 -
60 trang 233 1 0
-
vray for sketchup vietnamese PHẦN 3
10 trang 211 0 0 -
Đồ án tốt nghiệp: Thiết kế nội thất khách sạn thuyền buồm
21 trang 198 0 0 -
43 trang 185 1 0
-
Tóm tắt Đồ án tốt nghiệp Thiết kế đồ họa: Cụm thiết kế đồ họa quảng bá hiệp hội bảo vệ động vật Peta
33 trang 178 1 0 -
182 trang 172 0 0