Sau đó vẽ 1 elip nghiêng 1 góc G độ có các trục không song song với các trục tọa độ”... LỜI NÓI ĐẦUĐồ họa là một trong những lĩnh vực phát triển rất nhanh của ngành công ngh
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN MÔN HỌC
ĐỒ HỌA MÁY TÍNH
ĐỀ TÀI:“Vẽ 1 ellipse, sau đó vẽ thêm 3 ellipse khác có cùng tâm với ellipse đã cho, có độ dãn ở trục OX là K và OY là 1 Sau đó vẽ 1 elip nghiêng 1 góc G độ có các trục không song song với các trục tọa độ”
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 2
CHƯƠNG I KHẢO SÁT 3
1 Mục đích nghiên cứu 3
1.1 Về kỹ năng 3
1.2 Về tư duy 3
2 Đối tượng nghiên cứu 3
3 Khảo sát 3
3.1 Ứng dụng của hình Elip trong thực tế 3
3.2 Dự tính cần làm trong đề tài 3
CHƯƠNG II TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH 4
1 Khái niệm kỹ thuật đồ họa máy tính (COMPUTER GRAGHICS) 4
2 Các kỹ thuật đồ họa 5
2.1 Kỹ thuật đồ họa điểm 5
2.2 Kỹ thuật đồ họa vector 5
3 Ứng dụng của đồ họa máy tính 6
CHƯƠNG III CÁC THUẬT TOÁN SỬ DỤNG TRONG ĐỀ TÀI 6
1 Thuật toán vẽ hình elip 6
1.1 Thuật toán Bresenham 7
1 2 Thuật toán Midpoint 11
2 Thuật toán vẽ đồ thị hàm số 13
2.1 Bài toán đặt ra: Vẽ đồ thị của hàm số y = f(x) trên đoạn [Min,Max] 13
2 2 Giải thuật 13
CHƯƠNG IV CÁC PHÉP BIẾN ĐỔI 14
1 Phép tịnh tiến (Translation) 14
2 Phép biến đổi tỷ lệ 16
3 Phép quay 16
4 Phép đối xứng 19
CHƯƠNG V TÀI LIỆU THAM KHẢO 20
CHƯƠNG VI CODE BÀI TẬP LỚN 20
KẾT LUẬN 26
Trang 3LỜI NÓI ĐẦU
Đồ họa là một trong những lĩnh vực phát triển rất nhanh của ngành công nghệthông tin Nó được ứng dụng rộng rãi trong nhiều lĩnh vực khoa học và công nghệ.Chẳng hạn như trong y học, kiến trúc, giải trí… Đồ họa máy tính đã giúp chúng ta thayđổi cách cảm nhận và sử dụng máy tính, nó đã trở thành những công cụ trực quan quantrọng không thể thiếu trong đời sống hằng ngày Vì vậy, môn đồ họa đã trở thành mộttrong những môn học chính trong các chuyên nghành Công nghệ thông tin ở cáctrường đại học
Trong bài tập lớn bộ môn đồ họa máy tính nhóm em được giao đề tài: “Vẽ 1
ellipse, sau đó vẽ thêm 3 ellipse khác có cùng tâm với ellipse đã cho, có độ dãn ở trục OX là K và OY là 1 Sau đó vẽ 1 elip nghiêng 1 góc G độ có các trục không song song với các trục tọa độ” Được sự hướng dẫn của cô giáo bộ môn cũng như
qua các cổng thông tin Internet, tài liệu và sự tìm tòi trên các cuốn sách tài liệu liênquan tới đề tài nhóm em đã hoàn thành bài tập lớn được giao Trong quá trình hoànthành nhóm đã gặp được một số khó khăn cũng như thuận lợi và còn nhiều hạn chế.Nhóm em rất mong được sự đóng góp, bổ sung ý kiến để bài tập lớn của nhóm em cóthể hoàn thành tốt các đề tài tiếp theo cũng như đề tài của nhóm sau này
Hà Nội, Ngày 14 tháng 2 năm 2013
Trang 4CHƯƠNG I KHẢO SÁT
1 Mục đích nghiên cứu
1.1 Về kỹ năng
Xác định được độ dài trục lớn, trục nhỏ, tiêu cự, tiêu điểm của elip
Xác định được giao điểm vủa Elip với các trục tọa độ
Sử dụng tốt các thuật toán, cách vẽ hình elip và các phép biến đổi trong đồ họa1.2 Về tư duy
Thấy được mối liên hệ giữa Elip với đường tròn
Hiểu được tính chất hình học và giải một số bài toán cơ bản về Elip
2 Đối tượng nghiên cứu
Các phép biến hình như tịnh tiến, biến đổi tỉ lệ, phép quay, phép tịnh tiến và ứngdụng của nó trong hình học
Cách vẽ hình elip trong tọa độ không gian
3 Khảo sát
3.1 Ứng dụng của hình Elip trong thực tế
- Dùng trong toán học, công nghệ thông tin : vẽ hình Elip, đồ họa…
- Sản xuất các vật dụng trong cuộc sống : chậu tắm, mắt kính…
3.2 Dự tính cần làm trong đề tài
- Vẽ hình elip
- phép tỉ lệ
Trang 5- phép tịnh tiên
- phép quay
CHƯƠNG II TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
1 Khái niệm kỹ thuật đồ họa máy tính (COMPUTER GRAGHICS)
Kỹ thuật đồ họa máy tính là phương pháp và công nghệ dùng trong việc chuyểnđổi qua lại giữa dữ liệu và hình ảnh trên màn hình bằng máy tính [ISO] Kỹ thuật đồhọa hay đồ họa máy tính còn được hiểu dưới dạng phương pháp và kỹ thuật tạo hìnhảnh từ các mô hình toán học mô tả các đối tượng hay dữ liệu lấy được từ các đối tượngcó thật trong thực tế
Thuật ngữ kỹ thuật đồ họa máy tính được đề xuất bởi một nhà khoa học người
Mỹ tên là William Fetter vào năm 1960 Khi đó ông còn đang nghiên cứu xây dựng
mô hình buồng lái máy bay cho hãng Boeing của Mỹ Ông đã dựa trên các hình ảnh bachiều của mô hình của người phi công trong buồng lái của máy bay để xây dựng lênmột mô hình tối ưu cho buồng lái máy bay Boeing
Lịch sử đồ họa trong những năm 1960 còn được đánh dấu bởi dự án Sketchpadtại MIT với Ivan Shutherland tại hội nghị Fall Joint Computer cùng với sự kiện lần đầutiên tạo mới, hiển thị và thay đổi được dữ liệu hình ảnh trực tiếp trên màn hình trongthời gian thực
Trang 6Hình 1.1 Ivan Shutherland
Kỹ thuật đồ họa còn liên tục hoàn thiện vào những năm 1970 với sự xuất hiệncủa các chuẩn về đồ họa làm tăng cường khả năng giao tiếp và tái sự dụng của cácphần mềm cũng như các thư viện đồ họa
2 Các kỹ thuật đồ họa
2.1 Kỹ thuật đồ họa điểm
Nguyên lỹ xây dựng các mô hình và hình ảnh trong kỹ thuật đồ họa điểm gồm :các mô hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel
Có hai phương pháp để tạo ra các pixel này:
- Phương pháp thứ nhất là dùng phần mềm để vẽ trực tiếp từng pixel một dựatrên các lỹ thuyết mô phỏng
- Phương pháp thứ hai là số hóa hình ảnh thực của đối tượng Sau đó chúng ta cóthể sửa đổi hoặc xử lý mảng các pixel thu được theo những phương pháp khác nhau đểthu được hình ảnh đặc trưng của đối tượng
2.2 Kỹ thuật đồ họa vector
Trang 7Nguyên lý xây dựng các mô hình và hình ảnh trong kỹ thuật đồ họa vector nhưsau : trước hết người ta xây dựng mô hình hình học cho mô hình hoặc hình ảnh của đốitượng, xác định các thuộc tính của mô hình hình học này, sau đó dựa trên mô hìnhhình học này sẽ thực hiện quá trình tô trát để hiển thị từng điểm của mô hình, hình ảnhthực của đối tượng Ở kỹ thuật đồ họa này chúng ta chỉ lưu trữ mô tả của toán học củacác thành phần trong mô hình hình học cũng với các thuộc tính tương ứng của nó màkhông lưu trữ lại toàn bộ tất cả các pixel của hình ảnh tô trát được.
3 Ứng dụng của đồ họa máy tính
Ngày nay, đồ họa máy tính được xử dụng trong nhiều lĩnh vực khác nhau như:công nghiệp, thương mại, quản lý giáo dục, giải trí…như:
- Tạo giao diện như các chương trình ứng dụng Windows, Excel…
- Tạo ra các biểu đồ dùng trong thương mại, khoa học và kỹ thuật
- Tự động hóa văn phòng và chế bản điện tử
- Thiết kế với sự trợ giúp của máy tính
CHƯƠNG III CÁC THUẬT TOÁN SỬ DỤNG TRONG ĐỀ
TÀI
1 Thuật toán vẽ hình elip
Để đơn giản, ta chọn Ellipse có tâm ở gốc tọa độ Phương trình của nó có dạng: + = 1
Ta có thể viết lại:
Y2 = x2 + b2 (*)
Trang 8Hình 1.1 Hình ellipse
(*) Ý tưởng : Giống như thuật toán vẽ đường tròn Chỉ có sự khác biệt ở đây là taphải vẽ 2 nhánh : Một nhánh từ trên xuống và một nhánh từ dưới lên và 2 nhánh này sẽgặp nhau tại điểm mà ở đó hệ số góc của tiếp tuyến với Ellipse = -1
Phương trình tiếp tuyến với Ellipse tại điểm (x0,y0) € (E) :
X0 + y0 = 1
Suy ra, hệ số góc của tiếp tuyến tại điểm đó là :
1.1 Thuật toán Bresenham
Ở đây, ta chỉ xét nhánh vẽ từ trên xuống
Giả sử điểm ( xi , yi ) đã được vẽ Điểm tiếp theo cần chọn sẽ là ( xi + 1,yi ) hoặc(xi+1,yi – 1)
Thay (xi + 1) vào (*) :y2 = (xi + 1)2 + b2
Đặt
d1 = yi2 – y2 = yi2 + (xi + 1)2 – b2
Trang 10p:=p - 4*y + 2*(b2/a2)*(2*x+3);y:=y-1;
End;
x:=x+1;
Trang 12If pi < 0 Then pi+1 = pi + b2 + 2b2xi+1
Else pi+1 = pi + b2 + 2b2xi+1 – 2a2yi+1
Nhánh 2:
P1 = b2(xi + )2 + a2(yi – 1)2 – a2b2
If pi > 0 Then pi+1 = pi + a2 – 2a2yi+1
Else pi+1 = pi + a2 + 2b2xi+1 – 2a2yi+1
Trang 13y:=y-1;
Trang 142 Thuật toán vẽ đồ thị hàm số
2.1 Bài toán đặt ra: Vẽ đồ thị của hàm số y = f(x) trên đoạn [Min,Max].
*Ý tưởng: Cho x chạy từ đầu đến cuối để lấy các tọa độ (x,f(x)) sau đó làm trònthành số nguyên rồi nối các điểm đó lại với nhau
2 2 Giải thuật
Bước 1: Xác định đoạn cần vẽ [Min,Max]
Bước 2: - Đặt gốc tọa độ lên màn hình (x0,y0)
- Chia tỷ lệ vẽ trên màn hình theo hệ số k
- Chòn bước tăng dx của mỗi điểm trên đoạn cần vẽ
Bước 3: Chọn điểm đầu cần vẽ x = Min, tính f(x)
Đổi tọa độ màn hình và làm tròn:
x1:=x0 + Round(x.k);
y1:=y0 – Round(y.k);
Trang 15Di chuyển đến (x1,y1): MOVETO(x1,y1);
Bước 4 :
Tăng x lên với số ra dx : x := x + dx ;
Đổi qua tọa độ màn hình và làm tròn :
x2 := x0 + Round(x.k) ;
y2 :=y0 – Round(y.k) ;
Vẽ đến (x2,y2) :LINETO(x2,y2) ;
Bước 5 : Lặp lại bước 4 cho đến khi x > Max thì dừng
CHƯƠNG IV CÁC PHÉP BIẾN ĐỔI
1 Phép tịnh tiến (Translation)
Có hai quan điểm về phép biến đổi hình học, đó là :
- Biến đổi đối tượng : thay đổi tọa độ của các điểm mô tả đối tượng theo một quytắc nào đó
- Biến đổi hệ tọa độ : tạo ra một hệ tọa độ mới và tất cả các điểm mô tả đối tượngsẽ được chuyển về hệ tọa độ mới
Các phép biến đổi hình học cơ sở là : tịnh tiến, quay, biến đổi tỉ lệ
Phép biến đổi Affine hai chiều ( gọi tắt là phép biến đổi) là một ánh xạ T biến đổiđiểm P(Px,Py) thành điểm Q(Qx,Qy) theo hệ phương trình sau :
Qx = a*Px + c*Py + trx
Qy = b*Px + d*Py + try
Trang 16(Qx,Qy) = (Px,Py) (ad – bc) + (trx,try)
→ Q = P.M + tr
Dùng để dịch chuyển đối tượng từ vị trí này sang vị trí khác
Nếu gọi trx và try lần lượt là độ dời theo trục hoành và trục tung thì tọa độ điểmmới Q(x’,y’) sau khi tịnh tiến điểm P(x,y) sẽ là:
Hình 3.1 Phép biến đổi tịnh tiến điểm P thành điểm Q
2 Phép biến đổi tỷ lệ
try
trx
Q(x’,y’)
P(x,y)
Trang 17Phép biến đổi tỷ lệ làm thay đổi kích thước của đối tượng Để co hay giãn tọa độcủa một điểm P(x,y) theo trục hoành và trục tung lần lượt là Sx và Sy ta nhân Sx và Sy
lần lượt cho các tọa độ của P
- Nếu hai hệ số tỷ lệ khác nhau thì ta gọi là phép không đồng dạng Trong trườnghợp hoặc Sx hoặc Sy có giá trị 1, ta gọi đó là phép căng
3 Phép quay
Phép quay làm thay đổi hướng của đố tượng Một phép quay đòi hỏi phải có tâmquay, góc quay Góc quay dương thường được quy ước là chiều ngược kim đồng hồ
Phép quay quanh gốc tọa độ
Ta có công thức biến đổi của phép quay điểm P(x,y) quanh gốc tọa độ góc Ө(hình 3.2)
Trang 18Hình 3.2 Phép quay quanh gốc tọa độ
Phép quay quanh một điểm bất kỳ
Xét điểm P(P.x,P.y) quay quanh điểm V(V.x,V.y) một góc Ө đến điểmQ(Q.x,Q.y) Ta có thể xem phép quay quanh tâm V được kết hợp từ các phép biến đổi
cơ bản sau:
- Phép tịnh tiến (-V.x,-V.y) để dịch chuyển tâm quay về gốc tọa độ
Ta cần xác định tọa độ của điểm Q
- Từ phép tịnh tiến ( -V.x,-V.y) biến đổi điểm P thành P’ ta được:
P’ = P + V
Hay
P’.x = P.x – V.x
P’.y = P.y – V.y
- Phép quay quanh gốc tọa độ biến đổi điểm P’ thành Q’
0
P(x,y)Q(x’,y’)
Trang 19Q’ = P’.M
Q’.x = P’.x*cosӨ - P’.y*sinӨ
Q’.y = P’.x*sinӨ + P’.y*cosӨ
- Phép tịnh tiến ( +V.x, +V.y) biến đổi điểm Q’ thành Q ta được
Q = Q’ + V
Hay
Q.x = Q’.x + V.x
Q.y = Q’.y + V.y
→ Q.x = ( P.x – V.x)*cosӨ - (P.y – V.y)*sinӨ + V.x
Q.y = (P.x – V.x)*sinӨ + (P.y – V.y)*cosӨ + V.y
→ Q.x = P.x*cosӨ - P.y*sinӨ + V.x*(1- cosӨ) + V.y*sinӨ
Q.y = P.x*sinӨ - P.y*cosӨ - V.x*sinӨ + V.y* (1-cosӨ)
Trang 20CHƯƠNG VI CODE BÀI TẬP LỚN
Trang 22}
void veDen(float x, float y)
{
int xm = (int) (tlx*(x-xw1)+xv1); int ym = (int) (tly*(yw2-y)+yv1); lineto(xm,ym);
Trang 24{
y ;
if(p>0) p= p+a*a*(1-2*y) ;
else { x++ ; p=p+a*a*(1-2*y)+2*b*b*x; };
Trang 26int x1,y1,k; float a,b;
cout<<"Nhap toa do tam elip A(x1,y1): ";cin>>x1;cin>>y1;
cout<<"Nhap ban kinh a= ";cin>>a;
cout<<"Nhap ban kinh b= ";cin>>b;
cout<<"nhap do dan truc ox= ";cin>>k ;
Trang 27- Các thành viên trong nhóm tích cực tham gia hoạt động, thảo luận tìm hiểunghiên cứu về đề tài.
- Thời gian thực hiện đề tài tương đối dài
Bên cạnh những mặt thuận lợi chúng tôi cũng gặp không ít khó khăn như là:
- Nguồn tài liệu về đề tài nghiên cứu còn hạn chế
- Kiến thức về đề tài của các thành viên trong nhóm còn hạn chế
Sau quá trình nghiên cứu và tìm hiểu về đề tài, mỗi thành viên trong nhóm đã củngcố lại kiến thức đã học và bổ sung thêm một số kiến thức mới về môn đồ họa máytính Thành quả lớn nhất mà cả nhóm nhận được sau khi nghiên cứu xong là kĩ nănghoạt động nhóm Mỗi thành viên đã hiểu được trách nhiệm của bản thân đối với côngviệc chung của nhóm Qua đó mà mỗi thành viên đều cố gắng hoàn thành tốt côngviệc mà mình được giao
Bài báo cáo còn nhiều thiếu sót, chúng tôi rất mong bạn đọc thông cảm và bổ sung ýkiến để chúng tôi hoàn thiện bài báo cáo của mình một cách hoàn chỉnh, đầy đủ nhất
Chúng tôi xin chân thành cảm ơn!