TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI VẼ ĐỒNG HỒ KIM CHUYỂN ĐỘNG h Sinh viên thực hiện NGUYỄN ĐĂNG VIỆT ANH NGUYỄN MINH CHIẾN Giảng viên h[.]
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI: VẼ ĐỒNG HỒ KIM CHUYỂN ĐỘNG h Sinh viên thực : NGUYỄN ĐĂNG VIỆT ANH NGUYỄN MINH CHIẾN Giảng viên hướng dẫn : NGÔ QUỐC TẠO Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D14CNPM3 Khóa : 2019-2023 Hà Nội, ngày 30, tháng 03, năm 2022 Sinh viên thực hiện: Họ tên PHIẾU CHẤM ĐIỂM Nội dung thực Chữ ký h Ghi Nguyễn Đăng Việt Anh Nguyễn Minh Chiến Giảng viên chấm: Họ tên Chữ ký Ghi Giảng viên chấm : Giảng viên chấm : MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG I: TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH 1.1 Khái niệm đồ họa máy tính h 1.2 Lịch sử phát triển 1.3 Kỹ thuật đồ họa vi tính CHƯƠNG II: CÁC KỸ THUẬT ĐỒ HỌA 2.1 Kỹ thuật đồ họa điểm Hình 2.1 Ảnh đồ họa điểm Hình 2.2 Kỹ thuật đồ họa điểm 2.2 Kỹ thuật đồ họa vector Hình 2.3 Ảnh đồ họa vector 2.3 Phân loại đồ họa máy tính Hình 2.4 Ảnh đồ họa 2D vs 3D 2.4 Ứng dụng đồ họa máy tính Hình 2.5 Ứng dụng đồ họa máy tính 2.5 Các chuẩn giao diện hệ đồ họa CHƯƠNG III: PHẦN CỨNG ĐỒ HỌA 10 3.1 Các thành phần cứng hệ đồ họa tương tác Hình 3.1 Các thành phần cứng hệ đồ họa tương tác 10 10 3.2 Máy in 10 3.3 Màn hình CRT 11 Hình 3.2 Màn CRT 12 3.4 Màn hình tinh thể lỏng 12 Hình 3.3 Cơng nghệ truyền ánh sáng hình tinh thể lỏng CHƯƠNG IV: VẼ ĐỒNG HỒ KIM CHUYỂN ĐỘNG 12 13 4.1 Các công cụ ngôn ngữ sử dụng 13 4.2 Code thực nghiệm chương trình 14 Hình 4.1 Đồng hồ kim chuyển động 18 KẾT LUẬN 19 LỜI CẢM ƠN Nhóm chúng em xin chân thành cảm ơn thầy, cô mơn tận tình giảng dạy chúng em suốt thời gian học tập vừa qua Nhờ có dạy tận tình thầy, để giúp em hoàn thành báo cáo h Chúng em chân thành xin gửi lời cảm ơn đặc biệt đến thầy giáo Ngô Quốc Tạo người giảng dạy môn Đồ Họa Máy Tính, trực tiếp hướng dẫn tận tình, sửa chữa đóng góp nhiều ý kiến quý báu giúp nhóm chúng em hoàn thành báo cáo Thầy giúp em trang bị kiến thức môn học động lực để tiếp tục đường chinh phục cơng nghệ Do thời gian thực có hạn kiến thức nhiều hạn chế nên làm nhóm chúng em chắn khơng tránh khỏi thiếu sót định lúc thực Chúng em mong nhận ý kiến đóng góp thầy giáo bạn để chúng em có thêm kinh nghiệm tiếp tục hoàn thiện báo cáo Nhóm chúng em xin chân thành cảm ơn thầy cô! Sinh Viên Nguyễn Đăng Việt Anh Nguyễn Minh Chiến h LỜI MỞ ĐẦU Ngày với bùng nổ phát triển mạnh mẽ lĩnh vực Công nghệ thông tin, đặc biệt với đời Internet, trở thành phần khơng thể thiếu sống người Sự phát triển ln phụ thuộc vào khả truyền đạt thông tin chúng ta, đặc biệt qua hình ảnh Qua thập kỷ phát triển máy tính, khả phát sinh hình ảnh đạt tới mức máy tính có khả đồ họa Từ máy tính điện tử xuất vào năm 60, đồ họa máy tính kỹ thuật kèm liên tục phát triển với cơng nghệ phần cứng phần mềm máy tính Với việc hiển thị hình ảnh lên hình mục đích tính thiết yếu máy tính, đồ họa máy tính yếu tố quan trọng phản ánh trình độ cơng nghệ hệ thống máy tính Đồ họa máy tính lĩnh vực phát triển nhanh tin học, thu hút nhiều người học từ lĩnh vực khác tham gia Hiện đồ hoạ máy tính (Computer Graphics) chương trình thơng dụng nhất, góp phần quan trọng làm cho giao tiếp người máy tính trở nên thân thiện Thật vậy, giao diện kiểu văn (text) thay hoàn toàn giao diện đồ hoạ, với công nghệ đa phương tiện (multimedia) đưa ngành Công Nghệ Thông Tin sang phiên Đồ họa máy tính cơng nghệ tảng cốt lõi nhiều lĩnh vực, đặc biệt ngành liên quan đến hình ảnh kỹ thuật số phim ảnh, trị chơi điện tử, hình điện thoại máy tính, thiết kế đồ họa… Để nhắm bắt tốt hiểu rõ môn Đồ họa máy tính, nhóm chúng em chọn đề tài: “Vẽ đồng hồ kim chuyển động” đề tài kết thúc học phần mơn học Trong q trình thực báo cáo code nhóm chúng em khơng tránh khỏi nhiều sai sót, chúng em mong nhận lời đóng góp ý kiến thầy người h CHƯƠNG I: TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH 1.1 Khái niệm đồ họa máy tính Đồ họa máy tính là lĩnh vực của khoa học máy tính nghiên cứu sở tốn học, các thuật tốn cũng kĩ thuật phép tạo, hiển thị điều khiển hình ảnh hình máy tính Đồ họa máy tính có liên quan nhiều đến số lĩnh vực như đại số, hình học giải tích, hình học họa hình, quang học, kĩ thuật máy tính, đặc biệt chế tạo phần cứng (các loại màn hình, thiết bị xuất, nhập, vỉ mạch đồ họa ) Đồ họa máy tính phương pháp công nghệ dùng việc chuyển đổi qua lại liệu hình ảnh hình máy tính Đồ họa máy tính hay kĩ thuật đồ họa máy tính cịn hiểu dạng phương pháp kĩ thuật tạo hình ảnh từ mơ hình tốn học mơ tả đối tượng hay liệu lấy từ đối tượng thực tế. 1.2 Lịch sử phát triển Lịch sử đồ họa máy tính vào thập niên 1960 cịn đánh dấu dự án SketchPad phát triển tại Học viện Công nghệ Massachusetts (MIT) bởi Ivan Sutherland Các thành tựu thu được báo cáo hội nghị Fall Joint Computer kiện lần người ta tạo mới, hiển thị thay đổi liệu hình ảnh trực tiếp hình máy tính thời gian thực Hệ thống Sketchpad dùng để thiết kế hệ thống mạch điện bao gồm thành phần sau: - CRT hình - Bút sáng bàn phím bao gồm phím chức - Máy tính chứa chương trình xử lý thông tin Với hệ thống này, người sử dụng vẽ trực tiếp sơ đồ mạch điện lên hình thơng qua bút sáng, chương trình phân tích tính tốn thơng số cần thiết mạch điện người dùng vẽ nên Kỹ thuật đồ họa liên tục hoàn thiện vào thập niên 1970 với xuất chuẩn đồ họa làm tăng cường khả giao tiếp tái sử dụng phần mềm thư viện đồ họa h Sự phát triển vượt bậc công nghệ vi điện tử phần cứng máy tính vào thập niên 1980 làm xuất hàng loạt vỉ mạch hỗ trợ cho việc truy xuất đồ họa với giảm giá đáng kể của máy tính cá nhân làm đồ họa ngày sâu vào sống thực tế 1.3 Kỹ thuật đồ họa vi tính Definition (ISO): Phương pháp công nghệ chuyển đổi liệu từ thiết bị đồ hoạ sang máy tính Computer Graphics phương tiện đa mạnh giao tiếp người máy tính Computer Graphics (Kỹ thuật đồ hoạ máy tính) lĩnh vực Cơng nghệ thơng tin mà nghiên cứu, xây dựng tập hợp cơng cụ (mơ hình lý thuyết phần mềm) khác để: kiến tạo, xây dựng, lưu trữ, xử lý Các mơ hình (model) hình ảnh (image) đối tượng Các mơ hình (model) hình ảnh kết thu từ lĩnh vực khác nhiều ngành khoa học (vật lý, toán học, thiên văn học…) Computer graphics xử lý tất vấn đề tạo ảnh nhờ máy tính h CHƯƠNG II: CÁC KỸ THUẬT ĐỒ HỌA 2.1 Kỹ thuật đồ họa điểm - Các mơ hình, hình ảnh đối tượng hiển thị thông qua pixel (từng mẫu rời rạc) - Đặc điểm: Có thể thay đổi thuộc tính + Xố pixel mơ hình hình ảnh đối tượng + Các mơ hình hình ảnh hiển thị lưới điểm (grid) pixel rời rạc + Từng pixel có vị trí xác định, hiển thị với giá trị rời rạc (số nguyên) thông số hiển thị (màu sắc độ sáng) + Tập hợp tất pixel grid cho mô hình, hình ảnh đối tượng mà muốn hiển thị - Phương pháp để tạo pixel: + Phương pháp dùng phần mềm để vẽ trực tiếp pixel + Dựa lý thuyết mô (lý thuyết Fractal, v.v) để xây dựng nên hình ảnh mô vật + Phương pháp rời rạc hố (số hố) hình ảnh thực đối tượng + Có thể sửa đổi (image editing) xử lý (image processing) mảng pixel thu theo phương pháp khác để thu hình ảnh đặc trưng đối tượng Hình 2.1 Ảnh đồ họa điểm h Hình 2.2 Kỹ thuật đồ họa điểm 2.2 Kỹ thuật đồ họa vector - Mơ hình hình học (geometrical model) cho mơ hình hình ảnh đối tượng - Xác định thuộc tính mơ hình hình học - Q trình tơ trát (rendering) để hiển thị điểm mơ hình, hình ảnh thực đối tượng - Có thể định nghĩa đồ hoạ vector: Đồ hoạ vector = geometrical model + rendering - Những ảnh vector tạo thành từ thuật toán, phối trộn màu sắc dựa điểm, đường giới hạn Chúng tạo nên từ hình bản, đường cong, đường thẳng, text - Ảnh vector tạo thành từ vô số đối tượng khách nhau: Một đối tượng vector tạo thành từ việc xếp chồng vơ số đối tượng hình học lên với Và ảnh vector kết hợp vô số đối tượng vector - Ảnh vecotr zoom khơng vỡ Điều hồn tồn xác Nếu bạn lưu định dạng vector kich thước vấn đề Cho dù bạn thu phóng hay zoom chúng khơng bị vỡ h Hình 2.3 Ảnh đồ họa vector 2.3 Phân loại đồ họa máy tính - Kỹ thuật đồ hoạ hai chiều: kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ hai chiều (hệ toạ độ phẳng), sử dụng nhiều kỹ thuật xử lý đồ, đồ thị - Kỹ thuật đồ hoạ ba chiều: kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ ba chiều, địi hỏi nhiều tính tốn phức tạp nhiều so với kỹ thuật đồ hoạ hai chiều h Hình 2.4 Ảnh đồ họa 2D vs 3D Các lĩnh vực đồ họa máy tính: - Kỹ thuật xử lý ảnh (Computer Imaging): sau trình xử lý ảnh cho ta ảnh số đối tượng Trong trình xử lý ảnh sử dụng nhiều kỹ thuật phức tạp: kỹ thuật khôi phục ảnh, kỹ thuật làm ảnh, kỹ thuật xác định biên ảnh - Kỹ thuật nhận dạng (Pattern Recognition): từ ảnh mẫu có sẵn ta phân loại theo cấu trúc, theo tiêu trí xác định từ trước thuật tốn chọn lọc để phân tích hay tổng hợp ảnh cho thành tập hợp ảnh gốc, ảnh gốc lưu thư viện vào thư viện ta xây dựng thuật giải phân tích tổ hợp ảnh - Kỹ thuật tổng hợp ảnh (Image Synthesis): lĩnh vực xây dựng mơ hình hình ảnh vật thể dựa đối tượng mối quan hệ chúng - Các hệ CAD/CAM (Computer Aided Design/Computer Aided Manufacture System): kỹ thuật đồ hoạ tập hợp công cụ, kỹ thuật trợ giúp cho thiết kế chi tiết hệ thống khác nhau: hệ thống cơ, hệ thống điện, hệ thống điện tử… h - Đồ hoạ minh hoạ (Presentation Graphics): gồm công cụ giúp hiển thị số liệu thí nghiệm cách trực quan, dựa mẫu đồ thị thuật tốn có sẵn - Đồ hoạ hoạt hình nghệ thuật: bao gồm cơng cụ giúp cho hoạ sĩ, nhà thiết kế phim hoạt hình chuyên nghiệp làm kỹ xảo hoạt hình, vẽ tranh Ví dụ: phần mềm 3D Studio, 3D Animation, 3D Studio Max 2.4 Ứng dụng đồ họa máy tính - Xây dựng giao diện người dùng (User Interface) - Tạo biểu đồ thương mại, khoa học, kỹ thuật - Tự động hố văn phịng chế điện tử - Thiết kế với trợ giúp máy tính (CAD_CAM) - Lĩnh vực giải trí, nghệ thuật mơ - Điều khiển trình sản xuất (Process Control) - Lĩnh vực đồ (Cartography) - Giáo dục đào tạo Hình 2.5 Ứng dụng đồ họa máy tính h 2.5 Các chuẩn giao diện hệ đồ họa Mục tiêu phần mềm đồ hoạ chuẩn tính tương thích Khi cơng cụ thiết kế với hàm đồ hoạ chuẩn, phần mềm di chuyển cách dễ dàng từ hệ phần cứng sang hệ phần cứng khác dùng nhiều cài đặt ứng dụng khác - GKS (Graphics Kernel System): chuẩn xác định hàm đồ hoạ chuẩn, thiết kế tập hợp công cụ đồ hoạ hai chiều ba chiều - GKS Functional Description, ANSI X3.124 - 1985.GKS - 3D Functional Description, ISO Doc #8805:1988 - CGI (Computer Graphics Interface System): hệ chuẩn cho phương pháp giao tiếp với thiết bị ngoại vi - CGM (Computer Graphics Metafile): xác định chuẩn cho việc lưu trữ chuyển đổi hình ảnh - VRML (Virtual Reality Modeling Language): ngôn ngữ thực ảo, hướng phát triển công nghệ hiển thị đề xuất hãng Silicon Graphics, sau chuẩn hóa chuẩn cơng nghiệp - PHIGS (Programmers Hierarchical Interactive Graphics Standard): xác định phương pháp chuẩn cho mơ hình thời gian thực lập trình hướng đối tượng - PHIGS Functional Description, ANSI X3.144 - 1985+Functional Description, 1988, 1992 - OPENGL thư viện đồ họa hãng Silicon Graphics, xây dựng theo chuẩn hệ đồ họa năm 1993 - DIRECTX thư viện đồ hoạ hãng Microsoft, Direct X/Direct3D 1997 h CHƯƠNG III: PHẦN CỨNG ĐỒ HỌA 3.1 Các thành phần cứng hệ đồ họa tương tác - CPU: thực chương trình ứng dụng - Bộ xử lý hiển thị (Display Processor): thực công việc hiển thị liệu đồ hoạ - Bộ nhớ hệ thống (System Memory): chứa chương trình liệu thực - Gói phần mềm đồ hoạ (Graphics Package): cung cấp hàm đồ hoạ cho chương trình ứng dụng - Phần mềm ứng dụng (Application Program): phần mềm đồ hoạ ứng dụng - Bộ đệm (Frame buffer): có nhiệm vụ chứa hình ảnh hiển thị - Bộ điều khiển hình (Video Controller): điều khiển hình, chuyển liệu dạng số frame buffer thành điểm sáng hình Hình 3.1 Các thành phần cứng hệ đồ họa tương tác 3.2 Máy in - Dot size: đường kính điểm in bé mà máy in in - Dot size: đường kính điểm in bé mà máy in in Addressability: khả địa hố điểm in có đơn vị độ dài (dot per inch) 10 h - Số lượng màu vẽ điểm: + Dot size: - 20/ 100inch, 5/1000inch, máy vẽ 6,15/1000 inch + Point per inch: 200, 600, 1500, máy vẽ 1000, 2000 3.3 Màn hình CRT - Một chùm tia điện tử (tia âm cực) phát từ súng điện tử, vượt qua cuộn lái tia dẫn đến vị trí xác định hình phủ lớp phosphor Tại vị trí tương tác với tia điện tử hạt phosphor phát lên chấm sáng nhỏ Nhưng chấm sáng mờ dần nhanh nên cần có cách trì ảnh hình Một cách là: lặp lặp lại nhiều lần việc vẽ lại ảnh thật nhanh cách hướng tia điện tử trở lại ví trí cũ Gọi làm tươi (refresh CRT) - Số lượng tối đa điểm hiển thị CRT gọi độ phân giải (Resolution) Hay độ phân giải số lượng điểm cm mà vẽ theo chiều ngang chiều dọc (được xem tổng số điểm theo hướng) - Kích thước vật lý hình đồ hoạ tính từ độ dài đường chéo hình Thường dao động từ 12-27 inch, lớn - Thuộc tính khác hình tỷ số phương (aspect ratio) Nó tỷ lệ điểm dọc điểm ngang cần để phát sinh đoạn thẳng có độ dài đơn vị theo hai hướng hình Màn hình có tỷ số phương khác một, hình vng hiển thị thành hình chữ nhật cịn hình trịn thành hình ellipse - Màn hình dạng điểm (Raster Display): thường gặp số dạng hình sử dụng CRT cơng nghệ truyền hình Mỗi điểm hình gọi pixel Các thơng tin ảnh hiển thị hình lưu trữ vùng nhớ gọi vùng đệm làm tươi (Refresh buffer) vùng đệm khung (Frame Buffer) Vùng lưu trữ tập giá trị cường độ sáng toàn điểm hình ln tồn cách song ánh điểm hình phần tử vùng 11 h Hình 3.2 Màn CRT - Trong hình màu, người ta định nghĩa tập màu làm việc bảng tra (LookUp Table - LUT) Mỗi phần tử LUT định nghĩa ba giá trị (RGB) mô tả màu Khi cần sử dụng màu, ta cần định số thứ tự (index) tương ứng màu LUT, số phần tử bảng LUT số màu hiển thị lúc hình 3.4 Màn hình tinh thể lỏng Dựa vào công nghệ truyền ánh sáng qua điện cực mà đặt cuộn dây xoắn Khi chưa có từ trường (chưa có dịng điện) cuộn dây ánh sáng truyền thẳng, có từ trường ánh sáng truyền đổi chiều Hình 3.3 Cơng nghệ truyền ánh sáng hình tinh thể lỏng 12 h CHƯƠNG IV: VẼ ĐỒNG HỒ KIM CHUYỂN ĐỘNG 4.1 Các công cụ ngôn ngữ sử dụng - Ngôn ngữ sử dụng: Python, thư viện Turtle graphics, sử dụng VSCode - Python là ngơn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, tạo Guido van Rossum Nó dễ dàng để tìm hiểu lên ngơn ngữ lập trình nhập mơn tốt cho người lần đầu tiếp xúc với ngôn ngữ lập trình Python hồn tồn tạo kiểu động sử dụng chế cấp phát nhớ tự động Python có cấu trúc liệu cấp cao mạnh mẽ cách tiếp cận đơn giản hiệu lập trình hướng đối tượng Cú pháp lệnh Python điểm cộng vơ lớn rõ ràng, dễ hiểu cách gõ linh động làm cho nhanh chóng trở thành ngôn ngữ lý tưởng để viết script phát triển ứng dụng nhiều lĩnh vực, hầu hết tảng - Đồ thị rùa (tiếng Anh: Turtle graphics) dạng đồ thị phổ biến ngành đồ họa máy tính Có thể hiểu đồ thị rùa kiểu vẽ nét không nhấc bút, với thao tác vẽ đơn giản: tiến đoạn quay góc so với hướng hành Một "con rùa" có thuộc tính: - Vị trí ban đầu - Hướng ban đầu - Bút, với đặc tính màu sắc, độ dày Nguyên tắc thực hành vi "con rùa" câu lệnh liên tiếp bao gồm: - Đi thẳng đoạn x - Quay sang trái góc y - Bài toán vẽ đồng hồ kim chuyển động theo thời gian thực, có tiếng tick sau giây chạy, số từ đến 12, kim phút giây 13 h 4.2 Code thực nghiệm chương trình Import thư viện cần dùng: import time import winsound import turtle Tạo hình chính: # tạo screen wn = turtle.Screen() wn.bgcolor("#f4ece9") wn.setup(width=600,height=600) wn.title("Đồng Hồ đồ họa máy tính") Tạo bút rùa: # tắt animation wn.tracer(0) # tạo pen pen = turtle.Turtle() pen.hideturtle() pen.speed(10) pen.pensize(3) Hàm thực vẽ đồng hồ: def veMatdongho(h, m, s, pen): # vẽ viền pen.color("#171715") pen.begin_fill() pen.up() # Di chuyển rùa đến tọa độ xác định, vẽ đường thẳng đến đích (x, y) bút hướng xuống không vẽ bút hướng lên pen.goto(0,220) #Quay hướng rùa thành góc Dưới số hướng phổ biến theo độ: (đông), 90 (bắc), 180 (tây), 270 (nam) pen.setheading(180) pen.pendown() pen.circle(220) pen.end_fill() # vẽ mặt đồng hồ pen.color("#e17055","#fdc86a") pen.begin_fill() pen.up() pen.goto(0,210) pen.setheading(180) pen.pendown() pen.circle(210) pen.end_fill() 14 h # vẽ pen.penup() pen.goto(0,0) pen.setheading(90) for _ in range(12): #Đưa rùa phía trước theo khoảng cách xác định, theo hướng rùa hướng tới pen.fd(190) pen.pendown() pen.fd(20) pen.penup() pen.goto(0,0) pen.rt(30) for _ in range(60): pen.fd(200) pen.pendown() pen.fd(10) pen.penup() pen.goto(0,0) pen.rt(6) # vẽ kim pen.penup() pen.goto(0,0) pen.color("#341f97") pen.setheading(90) goc = (h / 12 *360) pen.rt(goc) pen.pendown() # vẽ kim phút pen.penup() pen.goto(0,0) pen.color("#341f97") pen.setheading(90) goc = (m / 60 *360) pen.rt(goc) pen.pendown() # độ dài kim pen.fd(130) # vẽ kim giây pen.penup() pen.goto(0,0) pen.color("#341f97") pen.setheading(90) goc = (s / 60 *360) pen.rt(goc) pen.pendown() # độ dài kim pen.fd(150) # số pen.penup() pen.goto(0,0) pen.setheading(60) pen.fd(160) pen.write(1,font=("Arial",15,"normal")) # số pen.penup() pen.goto(0,0) pen.setheading(28) pen.fd(165) pen.write(2,font=("Arial",15,"normal")) # độ dài kim pen.fd(100) 15 h