Hệ thống mô phỏng các tình huống tham gia giao thông sử dụng ngôn ngữ lập trình Visual C.Net, thư viện đồ hoạ OpenSG. Trong hệ thống này có sử dụng thư viện mã nguồn mở [9] cài đặt thuật toán phát hiện va chạm sử dụng hộp bao OBB. Các mô hình ô tô được lấy từ [12]. Sơ đồ khối của hệ thống mô phỏng các tình huống giao thông như hình 4.1
Hình 4.1 Sơ đồ khối của hệ thống mô phỏng tình huống giao thông
Trong sơ đồ này, khối đầu tiên đó là khối “Tính toán vector trạng thái mới” được cài đặt các phương pháp tính tích phân gần đúng bằng hai phương pháp Euler và Runge Kutte 4. Ta có thể sử dụng một trong hai hàm đã được cài đặt trong khối đó để tính toán vector trạng thái mới từ tập vector trạng thái hiện tại.
Khối thứ hai là khối “Dò tìm va chạm” cài đặt phương pháp phát hiện va chạm bằng hộp bao OBB (Object Boungding Boxes). Nếu không có va chạm nào ra thì khối này trả về giá trị FALSE, ngược lại khối trả về giá trị TRUE đồng thời cung cấp một số thông tin về vụ va chạm như sau:
Hai đối tượng va chạm nhau: body0, body1.
Điểm tiếp xúc của va chạm (contactPoint): là điểm đầu tiên mà hai đối tượng va chạm nhau.
Vector pháp tuyến normal có gốc là điểm tiếp xúc, hướng từ body0 sang body1 và vuông góc với mặt va chạm của body0.
Khoảng cách mà hai đối tượng thâm nhập vào nhau: penatrate > 0 Toàn cảnh thông tin về vụ va chạm được biễu diễn như trong hình 4.2
Hình 4.2 Các thông tin về vụ va chạm
Khối thứ ba là khối “Xử lý va chạm”, khối này nhận đầu vào là các thông tin về vụ va chạm và tính toán sự thay đổi về các trạng thái mới cho các đối tượng liên quan đến vụ va chạm. Trong khối này cài đặt các hàm xử lý hậu va chạm sử dụng các cơ sở vật lý như đã trình bày trong chương 3. Cuối cùng, toàn bộ thông tin về trạng thái hiện thời của các đối tượng cùng với những dữ liệu về hình dạng 3D của chúng sẽ được hiển thị ra màn hình thông qua khối “Render”.