1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Các đối tượng đồ họa cơ sở - Phan Phúc Doãn

16 66 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 454,54 KB

Nội dung

Bài giảng Các đối tượng đồ họa cơ sở do Phan Phúc Doãn thực hiện nhằm cung cấp cho các bạn những kiến thức về hệ tọa độ thực và hệ tọa độ thiết bị; điểm; đường thẳng, đường gấp khúc; vùng tô; kí tự, chuỗi kí tự; đường thẳng trên màn hình; đặc điểm của đường thẳng nguyên; thuật toán Slope - Intercept và một số nội dung khác.

Các đối tượng đồ họa cơ sở Phan Phúc Dỗ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ụ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 Điểm • • Là thành phần cơ sở  Tọa độ, màu sắc Đường thẳng, đường gấp khúc • Phương trình đoạn chắn: ( x − x1 )( y2 − y1 ) = ( y − y1 )( x2 − x1 ) • Phương trình tổng quát: Ax + By + C = 0 x = (1 − t ) x1 + tx2 • Phươ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 y = (1 − t ) y1 + ty2   Đườ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ẳng • Vùng bên trong: màu tơ và mẫu tơ Kí tự, chuỗi kí tự • Màu sắc • Font chữ • Kích thước • Khoảng cách giữa các kí tự • Sự canh chỉnh • Cá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ạc Các điểm được xác định từ  phương trình của đường  thẳng Ideal Line Rasterized line Đặc điểm của đường thẳng nguyên Xấp xỉ đường thẳng thực Khơng liên tục Dạ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 10 Phương trình đường thẳng thực (x1,y1) Dy Dx (x2,y2) y   m   x   b Dx  x2   x1 Dy  y2   y1 m   Dy / Dx b   y1   m   x1 11 Thuật toán Slope ­ Intercept SlopeInterceptLine(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 b = int stepX { (float)Dy / (float)Dx; y1 - m*x1; = (x2 > x1) ? : -1; while (x != x2) { x += stepX; y = round(m*x + b); putpixel(x, y, color); } } } 12 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 (x2,y2) Khắc phục:Tính tọa độ x theo y, nghĩa là x =  g(y) Dy Dx (x1,y1) 13 ImprovedSlopeInterceptLine(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); Thuật toán cải tiến if (abs(Dx) > abs(Dy)) { float m = (float)Dy / (float)Dx; float b = y1 - m*x1; int stepX = (Dx < 0) ? -1 : 1; while (x != x2) { x += stepX; putpixel(x, round(m*x + b), color); } } else if (Dy != 0) { float m = (float)Dx / (float)Dy; float b = x - m*y; int stepY = (Dy < 0) ? -1 : 1; while (y != y2) { y += stepY; putpixel(round(m*y + b), y, color); } } } 14 Cải tiến Vòng lặp bên trong: while (x != x2) { x += stepX; putpixel(x, round(m*x + b), color); } Giá trị của y được tính trực tiếp từ phương trình Chúng ta có thể tính giá trị của y bằng cách khác: float t = m * x + b + 0.5; while (x != x2) { x += stepX; t += m; putpixel(x, (int)t, color); } 15 Digital Differential Analyzer DDALine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; float t = 0.5; int x = x1, y = y1; putpixel(x, y, color); if (abs(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 other slopes } } 16 ... Khoảng cách giữa các kí tự • Sự canh chỉnh • Cá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ạc Các điểm được xác định từ ... Xấp xỉ đường thẳng thực Khơng liên tục Dạ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 10 Phương trình đường thẳng thực (x1,y1) Dy Dx (x2,y2) y   m   x   b... (float)Dx; y1 - m*x1; = (x2 > x1) ? : -1 ; while (x != x2) { x += stepX; y = round(m*x + b); putpixel(x, y, color); } } } 12 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

Ngày đăng: 30/01/2020, 08:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w