Có khá nhiều dự án đã giải quyết trên Bộ công cụ đồ họa chung cho việc này. GMTL ở đó rất hay - nó khá nhỏ, rất chức năng và được sử dụng rộng rãi đến mức rất đáng tin cậy. OpenSG, VRJuggler và các dự án khác đều đã chuyển sang sử dụng điều này thay vì toán học ma trận / ma trận cuộn bằng tay của chính họ.
Tôi đã thấy nó khá hay - nó thực hiện mọi thứ thông qua các mẫu, vì vậy nó rất linh hoạt và rất nhanh.
Biên tập:
Sau khi thảo luận về các bình luận và chỉnh sửa, tôi nghĩ rằng tôi sẽ cung cấp thêm một số thông tin về lợi ích và nhược điểm của việc triển khai cụ thể và lý do tại sao bạn có thể chọn cái khác, đưa ra tình huống của bạn.
GMTL -
Lợi ích: API đơn giản, được thiết kế đặc biệt cho các công cụ đồ họa. Bao gồm nhiều loại nguyên thủy hướng đến kết xuất (như mặt phẳng, AABB, quatenrions với nhiều phép nội suy, v.v.) không có trong bất kỳ gói nào khác. Chi phí bộ nhớ rất thấp, khá nhanh, dễ sử dụng.
Nhược điểm: API rất tập trung đặc biệt vào kết xuất và đồ họa. Không bao gồm ma trận mục đích chung (NxM), phân rã và giải ma trận, v.v., vì chúng nằm ngoài lĩnh vực của các ứng dụng đồ họa / hình học truyền thống.
Bản địa -
Lợi ích: API sạch , khá dễ sử dụng. Bao gồm một mô-đun Hình học với các bậc bốn và biến đổi hình học. Bộ nhớ thấp. Giải quyết đầy đủ, hiệu quả cao các ma trận NxN lớn và các thói quen toán học có mục đích chung khác.
Nhược điểm: Có thể là một phạm vi lớn hơn một chút so với bạn muốn (?). Ít thói quen hình học / kết xuất cụ thể hơn khi so sánh với GMTL (nghĩa là: Định nghĩa góc Euler, v.v.).
IMSL -
Lợi ích: Thư viện số rất đầy đủ. Rất, rất nhanh (được cho là người giải nhanh nhất). Cho đến nay, API toán học lớn nhất, đầy đủ nhất. Hỗ trợ thương mại, trưởng thành và ổn định.
Nhược điểm: Chi phí - không tốn kém. Rất ít phương pháp hình học / kết xuất cụ thể, vì vậy bạn sẽ cần phải tự mình cuộn lên trên các lớp đại số tuyến tính của chúng.
NT2 -
Lợi ích: Cung cấp cú pháp quen thuộc hơn nếu bạn đã sử dụng MATLAB. Cung cấp sự phân tách và giải quyết đầy đủ cho các ma trận lớn, v.v.
Nhược điểm: Toán học, không tập trung kết xuất. Có lẽ không phải là biểu diễn như Eigen.
LAPACK -
Lợi ích: Rất ổn định, thuật toán đã được chứng minh. Đã được khoảng một thời gian dài. Hoàn thành giải ma trận, vv Nhiều lựa chọn cho toán học tối nghĩa.
Nhược điểm: Không hiệu quả cao trong một số trường hợp. Được chuyển từ Fortran, với API lẻ để sử dụng.
Cá nhân, đối với tôi, nó đi đến một câu hỏi duy nhất - bạn dự định sử dụng cái này như thế nào. Nếu bạn tập trung vào kết xuất đồ họa và đồ họa, tôi thích Bộ công cụ đồ họa chung , vì nó hoạt động tốt và hỗ trợ nhiều thao tác kết xuất hữu ích ngoài hộp mà không phải thực hiện theo cách riêng của bạn. Nếu bạn cần giải quyết ma trận mục đích chung (ví dụ: phân tách SVD hoặc LU của ma trận lớn), tôi sẽ đi với Eigen , vì nó xử lý việc đó, cung cấp một số thao tác hình học và rất hiệu quả với các giải pháp ma trận lớn. Bạn có thể cần phải viết nhiều hơn các hoạt động đồ họa / hình học của riêng bạn (trên ma trận / vectơ của chúng), nhưng điều đó không kinh khủng.