Trong Box2D, làm cách nào tôi có thể có được lực nén trên một cơ thể cụ thể?


8

nhập mô tả hình ảnh ở đây

Tôi đang sử dụng Box2D. Như bạn có thể thấy, có ba cơ thể năng động được kết nối với nhau (nghĩ về nó như một bảng từ chế độ xem trước). LEG1 và LEG2 được kết nối với cơ thể tĩnh (đó là cơ thể mặt đất). Một cơ thể năng động khác đang rơi xuống bàn.

Tôi cần phải nén riêng trong LEG1 và LEG2.

Khớp có một GetReactionForce()hàm trả về a b2Vec, lần lượt có Length()và các LengthSqd()hàm. Điều này sẽ đưa ra tổng số lực trong bất kỳ khớp nào. Nhưng cái tôi cần là lực trong các cơ thể riêng lẻ được kết nối với khớp. Khi bạn kết nối một số cơ thể với một khớp duy nhất, nó sẽ hiển thị tổng các lực không hữu ích. Đây là trường hợp tôi đang nói về:

nhập mô tả hình ảnh ở đây


1
>> Một khi bạn kết nối một số cơ thể Một khớp chỉ có thể kết nối hai cơ thể. Kết nối mỗi chân với tấm bảng, và bạn sẽ nhận được trường hợp đầu tiên. Tôi có lầm không?
Pavel

Xin lỗi, tôi chỉ quên rằng một khớp chỉ tham gia hai cơ thể.
Mikayil Abdullayev

Câu trả lời:


2

Cả khớp khoảng cách và mối hàn đều có neo cục bộ bên trong chúng. Mỗi mỏ neo có liên quan đến một trong các cơ thể được kết nối bởi khớp. Bạn có thể tìm thấy lực nén của một khớp riêng lẻ bằng cách tìm khoảng cách giữa hai điểm neo trong không gian thế giới.

Bạn có thể sử dụng các chức năng này để truy xuất chúng:

joint->GetLocalAnchorA( );
joint->GetLocalAnchorB( );

Để biến đổi các điểm này thành không gian thế giới, bạn có thể sử dụng chức năng trên mỗi cơ thể được gọi là:

body->GetWorldPoint( v ); // Get the world coordinates of a vector given the local coordinates.

Các mối hàn (hoặc khoảng cách khớp) nên được sử dụng các ràng buộc mềm, nếu không, lỗi sẽ không đáng kể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.