Các đối tượng đồ họa cơ sở

Hệ tọa độ thực:

Tọa độ là số thực, liên tục

Lớn, nhỏ tùy ý

Hệ tọa độ thiết bị:

Tọa độ nguyên, rời rạc

Tọa độ bị giới hạn trong một khoảng nào đó

X thuộc [0, 639]

Hệ tọa độ thiết bị qui ước bàn tay trái

 

 

ppt16 trang | Chia sẻ: Mr Hưng | Lượt xem: 789 | Lượt tải: 0download
Nội dung tài liệu Các đối tượng đồ họa cơ sở, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
*Các đối tượng đồ họa cơ sởPhan Phúc Doãn*Hệ tọa độ thực và hệ tọa độ thiết bịHệ tọa độ thực: Tọa độ là số thực, liên tụcLớn, nhỏ tùy ýHệ tọa độ thiết bị:Tọa độ nguyên, rời rạcTọa độ bị giới hạn trong một khoảng nào đóX thuộc [0, 639]Hệ tọa độ thiết bị qui ước bàn tay trái*ĐiểmLà thành phần cơ sở Tọa độ, màu sắc*Đường thẳng, đường gấp khúcPhương trình đoạn chắn:Phương trình tổng quát: Ax + By + C = 0Phương trình tham số: Đường gấp khúc là tập các đoạn thẳng nối nhau xác định bởi các đỉnh *Đường thẳng, đường gấp khúc (tt)Màu sắcĐộ rộng nét vẽKiểu nét vẽ: liền, đứt,..*Vùng tôĐường biên và vùng bên trongĐường biên: giống đoạn thẳngVùng bên trong: màu tô và mẫu tô*Kí tự, chuỗi kí tựMàu sắcFont chữKích thướcKhoảng cách giữa các kí tựSự canh chỉnhCách hiển thị tuần tự các kí tựHướng của kí tự*Vẽ đường thẳng*Đường thẳng trên màn hìnhĐường thẳng được hình thành từ các điểm rời rạcCác điểm được xác định từ phương trình của đường thẳngIdeal LineRasterized line*Đặc điểm của đường thẳng nguyênXấp xỉ đường thẳng thựcKhông liên tụcDạng răng cưa (hình bậc thang)Nhanh – Thao tác cơ bản để tạo thành các đối tượng khác*Phương trình đường thẳng thựcy = m * x + bDx = x2 - x1Dy = y2 - y1m = Dy / Dxb = y1 - m * x1(x1,y1)(x2,y2)DyDx*Thuật toán Slope - InterceptSlopeInterceptLine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; int x = x1, y = y1; putpixel(x, y, color); if (Dx != 0) { float m = (float)Dy / (float)Dx; float b = y1 - m*x1; int stepX = (x2 > x1) ? 1 : -1; while (x != x2) { x += stepX; y = round(m*x + b); putpixel(x, y, color); } }}*Lưu ýKhi độ lớn của hệ số góc đường thẳng lớn hơn 1 thì các điểm trên đường thẳng rời rạc.Khắc phục:Tính tọa độ x theo y, nghĩa là x = g(y)(x2,y2)(x1,y1)DyDx*Thuật toán cải tiếnImprovedSlopeInterceptLine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; int x = x1, y = y1; putpixel(x, y, color); if (abs(Dx) > abs(Dy)) { float m = (float)Dy / (float)Dx; float b = y1 - m*x1; int stepX = (Dx abs(Dy)) { float m = (float)Dy / (float)Dx; float b = y - m*x; int stepX = (Dx < 0) ? -1 : 1; t += b + m*x; m *= (float)stepX; while (x != x2) { x += stepX; t += m; putpixel(x, (int)t, color); } } else if (Dy != 0) { // swap x & y to do other slopes }}

Các file đính kèm theo tài liệu này:

  • pptlinedrawing_5582.ppt