EPSILON KHÔNG PHẢI LÀ 0.00001! - nói dối e blog

EPSILON KHÔNG PHẢI LÀ 0.00001!

Hôm nay đọc được một bài blog rất thú vị về số học dấu phẩy động (floating-point) và hằng số EPSILON. Vấn đề này mình đã từng nghiên cứu kỹ nhiều lần trước đây. Lần đầu tiên là khi làm dự án mô phỏng bi-da trong công ty, mình đã viết một bài phân tích chi tiết trên wiki nội bộ. Sau đó cũng từng đăng tải suy nghĩ về chủ đề này trên diễn đàn cá nhân. Bạn đọc quan tâm có thể xem tại đây:

Nhớ lại năm ngoái khi tham dự hội nghị GDC2005, mình đã dành trọn vẹn buổi thuyết trình về chủ đề “Numerical Robustness for Geometric Calculations” - một phân tích rất sâu sắc về các lỗi số học trong tính toán hình học. Mình đã tìm lại được bản thuyết trình PowerPoint trên mạng và chia sẻ cho các bạn tham khảo tại địa chỉ: . Đây là tài liệu cực kỳ hữu ích cho các lập trình viên làm việc với vật lý mô phỏng hoặc engine game.

Cần lưu ý rằng việc chọn EPSILON = 0.00001 thường chỉ là giải pháp “vịt trời” (quick fix) trong một số trường hợp cụ thể. Trên thực tế, giá trị này cần được tính toán cẩn trọng dựa trên độ chính xác yêu cầu của từng bài toán, đặc biệt khi xử lý các phép so sánh hình học phức tạp như kiểm tra va chạm hoặc tính toán giao điểm. Một sai lầm phổ biến là áp dụng máy móc cùng một giá trị EPSILON cho mọi tình huống, dẫn đến các lỗi logic khó phát hiện.

0%