The Arm class represents the forearm.Public FunctionsPublic Static FunctionsArm()Matrix basis()
Basis vectors specify the orientation of a bone.
xBasis Perpendicular to the longitudinal axis of the bone; exits the arm laterally through the sides of the wrist.
yBasis or up vector Perpendicular to the longitudinal axis of the bone; exits the top and bottom of the arm. More positive in the upward direction.
zBasis Aligned with the longitudinal axis of the arm bone. More positive toward the wrist.Matrix basis = arm.basis(); Vector xBasis = basis.getXBasis(); Vector yBasis = basis.getYBasis(); Vector zBasis = basis.getZBasis(); Vector armCenter = arm.elbowPosition().plus(arm.wristPosition().minus(arm.elbowPosition()).times(0.5f)); Matrix transform = new Matrix(xBasis, yBasis, zBasis, armCenter);
The bases provided for the right arm use the right-hand rule; those for the left arm use the left-hand rule. Thus, the positive direction of the x-basis is to the right for the right arm and to the left for the left arm. You can change from right-hand to left-hand rule by multiplying the z basis vector by -1.
Note that converting the basis vectors directly into a quaternion representation is not mathematically valid. If you use quaternions, create them from the derived rotation matrix not directly from the bases.
- The basis of the arm bone as a matrix.
- 2.0.3Vector center()
The center of the forearm.
This location represents the midpoint of the arm between the wrist position and the elbow position.
- 2.1.0Vector direction()
The normalized direction in which the arm is pointing (from elbow to wrist).Vector direction = arm.direction();
- 2.0.3Vector elbowPosition()
The position of the elbow.Vector elbow = arm.elbowPosition();
If not in view, the elbow position is estimated based on typical human anatomical proportions.
- 2.0.3boolean equals(Arm arg0)boolean isValid()String toString()float width()
The average width of the arm.float width = arm.width(); //length Vector displacement = arm.elbowPosition().minus(arm.wristPosition()); float length = displacement.magnitude();
- 2.0.3Vector wristPosition()
The position of the wrist.Vector wrist = arm.wristPosition();
Note that the wrist position is not collocated with the end of any bone in the hand. There is a gap of a few centimeters since the carpal bones are not included in the skeleton model.