2009-02-03 41 views
24

Bất kỳ thư viện nào tốt cho quaternion tính toán trong C/C++?thư viện quaternion trong C/C++

Lưu ý phụ: mọi hướng dẫn/ví dụ hay không? Tôi đã google nó và được đến vài trang đầu tiên nhưng có lẽ bạn đã có một số bản demo/phòng thí nghiệm từ các khóa học compsci hoặc toán học bạn có thể/sẽ chia sẻ?

Cảm ơn

+5

+1 cho quaternions. Họ thật tuyệt. – jtbandes

+0

http://cqrlib.sourceforge.net/ – sastanin

Trả lời

8

Bạn có thể thử với Boost - thường là nơi tốt để bắt đầu. Họ có một số dedicated sublibrary cho điều đó.

Đối với các ví dụ, hãy xem tài liệu và kiểm tra đơn vị đi kèm với Tăng cường.

4

DirectX có riêng quaternion functions, cũng như một số thư viện 3D khác.

Theo tôi, cách tốt nhất để tìm hiểu cách quaternions làm việc là cày thông qua các môn toán chính mình. Trang Wikipedia trên quaternionsconversion chứa tất cả các công thức bạn cần. Tôi đã viết thư viện quaternion của riêng tôi từ đó :) (Đó là trong Haskell, vì vậy tôi sẽ không bận tâm để đăng nó.)

+0

Ý tưởng tốt với DirectX và đồ họa. Học tập có thể tạo ra một số hiệu ứng hình ảnh hấp dẫn. – Anonymous

+0

Nó thực sự không phải là khó để làm cho mình, nếu bạn không thể tìm thấy các thư viện. Tôi đã không có vấn đề với nó và đào tạo toán CNTT của tôi rất hạn chế (mức độ kinh doanh khoa học máy tính, không khoa học thuần túy). –

3

Đối với tài liệu về quaternions, hãy kiểm tra sách văn bản đồ họa 3D. Chúng đơn giản là các ma trận tạo ra hiệu ứng xoay vòng 3D bằng phép nhân thay vì lượng giác tính toán đắt tiền.

7

Nếu bạn quyết định cuộn của riêng bạn, hoặc thực sự muốn hiểu toán học đằng sau mã (hữu ích để gỡ lỗi), tôi khuyên bạn nên Martin Baker's website. Nó có vẻ nguyên thủy, nhưng những lời giải thích rất kỹ lưỡng và dễ làm theo, và anh ta cũng cung cấp mã ở những nơi.

2

Trang web này, euclideanspace, rất quan trọng nếu bạn đang làm việc với quaternions. Nó có tất cả các bước số học theo từng bước, tương đương, đơn giản hóa, mẫu mã bằng các ngôn ngữ khác nhau. Tôi đã tự thực hiện hầu hết các chức năng của mình sau trang này. Tôi thích điều đó hơn là tải xuống thư viện. Chức năng dễ dàng lập trình và bạn học trên đường.

Như một ví dụ, tôi đề nghị bạn kiểm tra C++ chức năng này về một nhân quaternion: Efficient C++ quaternion multiplication using cv::Mat

2

graphene mà là một đơn giản C/GObject thư viện với optimisations SIMD cho vector khác nhau, ma trận, quaternion, vv tính toán đó là phổ biến trong đồ họa 3D.