Di Box2D, bagaimana saya bisa mendapatkan kekuatan kompresi pada tubuh tertentu?

8

masukkan deskripsi gambar di sini

Saya menggunakan Box2D. Seperti yang Anda lihat, ada tiga benda dinamis yang terhubung satu sama lain (anggap sebagai tabel dari tampilan depan). LEG1 dan LEG2 terhubung ke badan statis (ini adalah badan dasar). Tubuh dinamis lain jatuh ke atas meja.

Saya perlu mendapatkan kompresi di LEG1 dan LEG2 secara terpisah.

Sendi memiliki GetReactionForce()fungsi yang mengembalikan a b2Vec, yang pada gilirannya memiliki Length()dan LengthSqd()berfungsi. Ini akan memberikan jumlah total pasukan dalam sambungan yang diambil. Tapi yang saya butuhkan adalah kekuatan dalam tubuh individu yang terhubung dengan sendi. Setelah Anda menghubungkan beberapa benda dengan satu sambungan lagi itu akan menunjukkan jumlah kekuatan yang tidak berguna. Inilah kasus yang saya bicarakan:

masukkan deskripsi gambar di sini

Mikayil Abdullayev
sumber
1
>> Setelah Anda menghubungkan beberapa benda Satu sambungan hanya dapat menghubungkan dua benda. Hubungkan setiap kaki ke pelat meja, dan Anda akan mendapatkan lagi kasing pertama. Apakah aku salah?
Pavel
Maaf, saya hanya lupa bahwa gabungan hanya bergabung dengan dua tubuh.
Mikayil Abdullayev

Jawaban:

2

Sambungan jarak dan sambungan las memiliki jangkar lokal di dalamnya. Setiap jangkar relatif terhadap salah satu benda yang dihubungkan oleh sambungan. Anda dapat menemukan kompresi sendi individu dengan menemukan jarak antara dua titik jangkar di ruang dunia.

Anda dapat menggunakan fungsi-fungsi ini untuk mengambilnya:

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

Untuk mengubah titik-titik ini ke ruang dunia Anda dapat menggunakan fungsi pada setiap tubuh yang disebut:

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

Sambungan las (atau sambungan jarak jauh) harus menggunakan batasan lunak, jika tidak kesalahan akan diabaikan.

RandyGaul
sumber