VI. Giao điểm của hai đường thẳng
Từ hai đoạn thẳng (hoặc vector) trong mặt phẳng 2D, ta có thể tìm được giao điểm của chúng để
tính toán các góc phản xạ và hướng di chuyển.
1. Tạo phương trình đường thẳ ng từ đoạn thẳng
Ta có hai điểm A(x1,y1) và B(x2,y2) tạo thành một đoạn thẳng, để tạo được một phương trình
đường thẳng từ hai điểm này, ta cần tính được độ nghiêng của đường thẳng (slope) theo công
thức:
a = (y2 – y1)/(x2 – x1)
Thay thế x2, y2 bằng hai biến x,y:
a = (y – y1)/(x – x1)
=> y – y1 = a(x – x1)
Hay:
y = ax + (y1 – ax1)
Đặt b = y1 – ax1, ta có:
y = ax + b
2. Tính giao điể m của hai đường thẳng
Ta có hai phương trình đường thẳng
(1): y = a1x + b1
(2): y = a2x + b2
Ta có thể tính được giao điểm của chúng bằng cách tìm giao điểm x trước:
a1x + b1 = a2x + b2;
=> x(a1 – a2) = b2 – b1
=> x = (b2 – b1)/(a1 – a2)
Khi đã có x, ta sẽ thế vào (1) hoặc (2 ) để tính được y. Để kiểm tra hai đoạn thẳng có cắt nhau
không, ta chỉ cần kiểm tra điểm {x,y} thuộc cả hai đoạn thẳng hay không. Ngoài ra ta cần loại
trừ trường hợp hai đường thẳng song song hoặc trùng nhau, khi đó giá trị slope của chúng sẽ
bằng nhau.
Hiển thị các bài đăng có nhãn Kĩ thuật lập trình game. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Kĩ thuật lập trình game. Hiển thị tất cả bài đăng
Thứ Sáu, 29 tháng 11, 2013
Chủ Nhật, 17 tháng 11, 2013
Kĩ thuật lập trình Game – Cơ bản - part 1
I. Vòng lặp game (Game loop) hoạt động thế nào?
Phần cốt lõi của hầu hết các game chính là vòng lặp được dùng để cập nhật và hiển thị trạng thái của game. Trong bài viết này, ta sẽ minh họa các phương pháp tạo vòng lặp game với ngôn ngữ javascript.
1. Vòng lặp cơ bản
Một vòng lặp game cơ bản bao gồm các việc được thực hiện theo thứ tự sau:
while(gameRunning)
{
processInput(); // keyboard, mouse,...
updateGame();
draw();
// checkGameOver();
}
Minh họa:
Đăng ký:
Bài đăng (Atom)
