What do the RotA and RotB paramaters to the ConeJoint constructor do?

How do ConeJoints work, in general? Specifically, how does one create a ConeJoint constraint between any two objects in any orientation?

I’ve read in the documentation for ConeJoint that the default axis of symmetry of the ConeJoint is Vector3f.UNIT_X. However, I can’t make sense of the two rotation matrices the constructor expects. In the c++ source they are referred to as “frameInA” and “frameInB”, implying that they represent rotated coordinate frames for each object the ConeJoint connects, but even after much experimentation their precise meaning eludes me.

If anyone can explain what those matricies do, I will post detailed videos of my experiments and make a post on the wiki documenting how to use ConeJoints so that no one has to go through this again. I’ll also improve the javadoc for ConeJoint.

n.b. I’m using native bullet, not jbullet.


–Robert McIntyre