Triển khai thực hiện thuật toán tổng quát trên: (1) Tính mặt phẳng chứa tam giác

Một phần của tài liệu Sử dụng thực tại ảo mô phỏng điểm đen giao thông trên địa bàn tỉnh Thái Nguyên (Trang 40 - 43)

Bước 2: Tính điểm giao trên hình cầu khi chúng sẽ va chạm với mặt phẳng.

Bước 3: Tính điểm giao trên mặt phẳng khi hình cầu va chạm với mặt phẳng.

Bước 4: Tính toán, nếu điểm va chạm trên mặt phẳng nằm trong tam giác. Nếu không ta phải tính lại điểm va chạm thực sự.

Bước 5: Nếu xảy ra khả năng điểm giao không thực sự và khoảng cách tới điểm giao nhỏ hơn hoặc bằng độ lớn của khoảng cách mà chúng ta muốn di chuyển đối tượng, chúng ta sẽ kiểm tra điểm va chạm gần nhất có thể. Lưu thông tin va chạm.

Thuật toán kết thúc, nếu tồn tại điểm va chạm gần nhất, thì thực hiện lưu giữ thông tin va chạm, thông tin này cần thiết để xử lý phản hồi (response) sau va chạm. Khi toàn bộ quá trình phát hiện và xử lý va chạm kết thúc, ta chuyển toàn bộ kết quả vào không gian R3 chuẩn để được kết quả cuối cùng, cập nhật vị trí mới của đối tượng.

a) Triển khai thực hiện thuật toán tổng quát trên: (1). Tính mặt phẳng chứa tam giác (1). Tính mặt phẳng chứa tam giác

Biết rằng mặt phẳng là vô hạn, còn tam giác là một tập con (tập đóng) của mặt phẳng đó. Ta định nghĩa một mặt phẳng bởi một điểm gốc và một vector pháp tuyến vuông góc với mọi vector nằm trong mặt phẳng đó. Để xác định vector pháp tuyến, từ 2 vector không song song nằm trong mặt phẳng.

Giả sử ta có mặt phẳng chưa tam giác ABC. Chọn A làm gốc và ta có 2 vector không song song được tính bởi công thức:

v1 = B – A v2 = C – A

Vector pháp tuyến được tính bằng tích có

Lưu ý: thứ tự của các Vector v1,v2 là rất quan trọng, nó xác định chiều của vector pháp tuyến. Chuẩn hóa vector pháp tuyến (độ dài bằng 1)

Như vậy, ta đã có được mặt phẳng chứa tam giác đang xét và cần phải chuyển tam giác vào không gian Ellipsoid trước khi thao tác với chúng.

(2). Tính điểm va chạm giả định trên hình cầu (cầu đơn vị)

Thực hiện tính trước điểm giao (nằm trên mặt cầu) khi mặt cầu va chạm với tam giác, vì ta chỉ dựa vào hình cầu và mặt phẳng chứa tam giác, nếu sử dụng Ellipsoid thì ở bước này sẽ khó hơn. Tuy nhiên phải (nên) tận dụng không gian Ellipsoid để giảm độ phức tạp. Tính điểm giao được mô tả bởi hình sau:

Tính điểm giao trên hình cầu (trước khi di chuyển hình cầu) bằng tịnh tính (giả định) mặt phẳng tới làm mặt phẳng tiếp diện với mặt cầu khi đó được tiếp điểm chính là giao điểm sẽ xảy ra va chạm. Đường chấm chấm trong hình biểu diễn mặt phẳng tiếp diện khi ta tịnh tiến mặt phẳng. Thuật toán thực hiện là:

eIPoint = source – pNormal Hình 2.11. Tìm điểm va chạm giả định

(3). Tính điểm va chạm giả định nằm trên mặt phẳng

Tính điểm giao trên mặt phẳng khi hình cầu di chuyển dọc theo vector vận tốc sẽ va chạm với mặt phẳng tại điểm này. Để tìm điểm này, ta kéo một tia từ điểm nằm trên mặt cầu dọc theo vector vận tốc, tia này cắt mặt phẳng tại đầu thì nó chính là điểm giao. Còn điểm nằm trên mặt cầu đó là điểm khi ta vẽ bán kính của mặt cầu song song và ngược chiều với vector pháp tuyến của mặt phẳng, như hình vẽ 2.12.

Hình 2.12. Tính điểm va chạm giả định nằm trên mặt phẳng

Ở trên, chưa xét hết các trường hợp, ta xét trường hợp mặt phẳng cắt mặt cầu như hình , thấy rằng điểm va chạm bây giờ không phải là một điểm mà là một tập các điểm, như vậy tính toán gặp vấn đề, do vậy phải chọn điểm nằm trên mặt phẳng chính là điểm khi ta vẽ bán kính theo hướng của vector pháp tuyến của mặt phẳng, bán kính này giao với mặt phẳng tại điểm nào thì điểm đó là điểm cần tìm. Việc này được thực hiện khi mặt phẳng cắt mặt cầu

(4). Tính toán điểm giao thực

Nếu tồn tại điểm giao thực, điểm mà hình cầu sẽ va chạm với tam giác, có 2 trường hợp xảy ra: hoặc là điểm va chạm nằm trong tam giác chúng ta đang xét hoặc là nằm ngoài tam giác (thuộc mặt phẳng) - không xét trường hợp mặt cầu không va chạm với mặt phẳng.

Nếu điểm giao trên mặt phẳng nằm trong tam giác thì ta được điểm giao thực sự, nếu không thì xuất hiện tình huống là cả điểm giao trên mặt cầu và mặt phẳng đều không đúng khi đó phải tính toán lại.

Trong trường hợp điểm va chạm với mặt phẳng nằm ngoài tam giác, lấy điểm nằm trên cạnh của tam giác sao cho điểm này nằm gần với điểm va chạm với mặt phẳng nhất. Từ điểm này ta sẽ kéo một tia song song với vector vận tốc và cắt mặt cầu tại điểm nào thì điểm đó chính là điểm va chạm thực sự. Trong trường hợp tia không cắt hình cầu có nghĩa là không có va chạm xảy ra. Ý tưởng được mô tả như hình vẽ 2.14.

Hình 2.14. Tính điểm giao thực

Tóm lại, chỉ cần tính toán xem điểm va chạm có nằm trong tam giác hay không, nếu chắc chắn rằng điểm này nằm trong cùng một mặt phẳng với tam giác thì độ phực tạp sẽ được giảm khi đưa về xét trong không gian 2 chiều. Ta sẽ làm giảm độ phức tạp của vấn đề khi đưa chúng xét trong không gian 2 chiều.

Ý tưởng thuật toán kiểm tra một điểm nằm trong tam giác: Giả sử ta có điểm P bất kì, nối điểm

P với các đỉnh của tam giác ABC, khi đó: Nếu P nằm trong tam giác ABC thì : + + = 360o; Nếu P nằm ngoài tam giác ABC thì : + +

< 360o

Lưu ý: tích vô hướng của 2 vector

đơn vị bằng cosin của góc giữa chúng Hình 2.15. Kiểm tra một điểm nằm trong tam giác Như vậy, còn trường hợp khi điểm va chạm nằm ngoài tam giác, được tính toán điểm nằm trên cạnh của tam giác gần với điểm va chạm giả định nhất.

Ta thực hiện hạ 3 đường vuông góc từ điểm va chạm giả định xuống 3 cạnh của tam giác, lấy đường vuông góc có độ dài nhỏ nhất, nếu chân đường vuông góc nằm trên cạnh của tam giác thì chân đường vuông góc đó chính là điểm cần tìm. Ngược lại ta sẽ lấy một trong 2 đỉnh gần nhất của cạnh ứng với đường vuông góc đó.

Hình 2.16. Kiểm tra điểm va chạm xác nhận điểm va chạm

(5). Va chạm xảy ra

Ở các bước trên ta đã thực hiện được: Khoảng cách tới điểm va chạm (nếu có); Điểm va chạm trên mặt cầu; Điểm va chạm trên tam giác. Trước hết, thấy rằng va chạm xảy ra thì khoảng cách tới điểm va chạm phải nhỏ hơn hoặc bằng quãng đường di chuyển của hình cầu (độ lớn của vector vận tốc). Ta vẫn chỉ xét riêng với tam giác hiện tại, trong lúc di chuyển bất chợt có thể va chạm với các tam giác khác…

Một phần của tài liệu Sử dụng thực tại ảo mô phỏng điểm đen giao thông trên địa bàn tỉnh Thái Nguyên (Trang 40 - 43)

Tải bản đầy đủ (PDF)

(72 trang)