3. CƠ SỞ LÝ THUYẾT GAME
3.2. Đƣờng cong Bézier
3.2.1. Khái niệm đƣờng cong Bézier
Đường cong Bézier là một đường cong tham số thường được sử dụng trong đồ họa máy tính và một số lĩnh vực khác. Dạng tổng quát hóa của đường cong Bézier trong không gian nhiều chiều được gọi là mặt phẳng Bézier, trong đó tam giác Bézier là một trường hợp đặc biệt.
Đường cong Bézier được công bố lần đầu vào năm 1962 bởi một kỹ sư người Pháp Pierre Bézier, người sử dụng nó để thiết kế thân ôtô. Nhưng việc nghiên cứu những đường cong này thực tế đã bắt đầu từ năm 1959 bởi nhà toán học Paul de Casteljau, ông sử dụng giải thuật De Casteljau để đánh giá các đường cong đó.
Về mặt ứng dụng, đường cong Bézier thường được sử dụng trong đồ họa vector để mô hình hóa các đường cong mượt (smooth curves) và những đường cong đó có thể được phóng to hoặc thu nhỏ theo một tỉ lệ không giới hạn. "Đường dẫn" (path), một khái niệm được sử dụng trong các chương trình xử lý ảnh, được tạo ra bằng cách liên kết các đường cong Bézier với nhau. Đường cong Bézier còn thường được sử dụng như là một công cụ để điều khiển sự chuyển động (animation) [6].
Hình II.8: Đường cong Bézier bậc 3 (cubic)
3.2.2. Các đƣờng cong Bézier
Một đường cong Bézier được xác định bằng một tập hợp các điểm kiểm soát (control point) P0 đến Pn với n được gọi là bậc của nó (n = 1 cho bậc tuyến tính, 2
SVTH: Nguyễn Tấn Châu – Lớp: 10CNTT2 Trang 19 cho bậc 2...). Điểm kiểm soát đầu và cuối là các điểm mút (điểm kết thúc) của đường cong, trong khi các điểm nằm giữa (nếu có) thường không nằm trên đường cong [6].
3.2.2.1. Đƣờng cong Bézier tuyến tính hay bậc một (linear)
Với 2 điểm P0 và P1, đường cong Bézier tuyến tính là một đoạn thẳng nối liền với hai điểm đó. Phương trình của đường cong này là:
[6]
3.2.2.2. Đƣờng cong Bézier toàn phƣơng hay bậc hai (quadratic)
Đường cong Bézier bậc 2 được tạo bởi một hàm B(t), với các điểm P0, P1, và
P2 cho trước, khi đó:
, và có thể biểu diễn thành tập hợp các điểm tương ứng trong đường Bézier tuyến tính được tạo bởi hai đường Bézier tuyến tính từ P0 đến P1 và từ P1 đến P2. Nói một cách tường minh, thì nó có thể viết lại thành:
Đường cong này xuất phát từ P0, tiến đến P1 rồi lại chuyển hướng dần đến
P2. Nói cách khác, tiếp tuyến tại P0 và P2 cắt nhau tại P1. Điều này cũng dễ rút ra từ đạo hàm của đường cong Bézier:
[6]
3.2.2.3. Đƣờng cong Bézier lập phƣơng hay bậc ba (cubic)
Với 4 điểm P0, P1, P2 và P3 trên mặt phẳng hoặc trong không gian nhiều chiều có thể định nghĩa một đường cong Bézier bậc 3. Đường cong này bắt đầu từ điểm P0, đi theo hướng của điểm P1 và P2 trước khi kết thúc tại p3. Đường cong được hình thành thường không trực tiếp đi qua điểm P1 và P2 và 2 điểm này chỉ mang tính định hướng cho đường cong.
SVTH: Nguyễn Tấn Châu – Lớp: 10CNTT2 Trang 20 Phương trình đường cong Bézier bậc 3 có thể được định nghĩa bằng cách kết hợp 2 đường cong Bézier bậc 2 với nhau, với phương trình cho đường cong Bézier bậc 2 là BPi,Pj,Pk, trong đó Pi, Pj, Pk là các điểm của đường cong đó.
Dạng tường minh cho phương trình này là:
[6]
3.2.3. Tổng quát
Có thể định nghĩa các đường cong Bézier với các bậc cao hơn 3.
3.2.3.1. Định nghĩa đệ quy
Một đường cong Bézier bậc n có thể được định nghĩa đệ quy bằng sự kết hợp tuyến tính, từ điểm-đến-điểm của một cặp các điểm tương ứng với nhau của 2 đường cong Bézier bậc n -1.
Giả sử một đường cong Bézier được xác định bởi BP0P1...Pn, với các điểm là P0, P1,..., Pn. Khi đó:
là giá trị ban đầu, và
[6]
3.2.3.2. Định nghĩa tƣờng minh
Công thức trên có thể được viết một cách tường minh như sau:
SVTH: Nguyễn Tấn Châu – Lớp: 10CNTT2 Trang 21
3.2.4. Áp dụng đƣờng cong Bézier
Trong game này, tôi sử dụng đường cong Bézier bậc 5 để làm đường chuyển động cho tên lửa. Đường cong Bézier được định nghĩa theo cách định nghĩa tường minh phía trên như sau:
SVTH: Nguyễn Tấn Châu – Lớp: 10CNTT2 Trang 22
CHƢƠNG III: XÂY DỰNG GAME KHÔNG CHIẾN
1. Cơ sở lý thuyết
Các nội dung sẽ tìm hiểu và áp dụng vào chương trình
Ngôn ngữ lập trình C/C++. Toán 2D ○ Vector ○ + - * / ○ Tích vô hướng ○ Tích có hướng
Vùng giới hạn (Bounding Box) ○ AABB
Kiểm tra sự va chạm
○ Kiểm tra va chạm giữa AABB – AABB
Thuật toán ○ Quản lý bộ nhớ
● Memory pool
SDL
○ Tối ưu xử lý đồ họa
○ Mở rộng thư viện và tải các loại ảnh định dạng khác ○ Lọc màu
○ Sử dụng Sprite Sheets trong việc mô tả chuyển động nhân vật ○ Sử dụng font chữ trong game
○ Xử lý sự kiện bàn phím ○ Xử lý sự kiện chuột ○ Trạng thái phím ○ Âm thanh
Thư viện SDL mixer
SVTH: Nguyễn Tấn Châu – Lớp: 10CNTT2 Trang 23
Âm thanh hiệu ứng ○ Điều chỉnh tốc độ khung hình ○ Tính tốc độ khung hình ○ Chuyển động
○ Xử lý cuộn bản đồ
○ Thay đổi kích thước cửa sổ và sự kiện cửa sổ ○ Mô tả hiệu ứng bằng hệ thống hạt
2. Mô tả chƣơng trình 2.1. Các công việc cụ thể
Xây dựng game 2D:
+ Tên game: Không chiến + Ngôn ngữ lập trình: C++ + Thư viện đồ họa: SDL
+ Data: sử dụng file .png để tải các hình ảnh vào game, sử dụng file .wav để tạo âm thanh trong game. Các loại file .png, .wav này cho phép tải xuống miễn phí.