intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PPT | Số trang:16

44
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

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

  1. Các đối tượng đồ họa cơ sở Phan Phúc Doãn 1
  2. 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 2
  3. Điểm • Là thành phần cơ sở  • Tọa độ, màu sắc 3
  4. Đườ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ố:  y = (1 − t ) y1 + ty2 • Đườ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   4
  5. Đườ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,.. 5
  6. 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ô 6
  7. 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ự 7
  8. Vẽ đường thẳng 8
  9. Đườ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 9
  10. Đặ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
  11. 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
  12. 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)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); } } } 12
  13. 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
  14. ImprovedSlopeInterceptLine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1; int Dy = y2 – y1; int x = x1, y = y1; Thuật toán cải tiến putpixel(x, y, color); 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
  15. 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
  16. 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 do other slopes } } 16
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2