Methods:
The Arm class represents the forearm.
Public FunctionsPublic Static FunctionsArm()Matrix basis()The orthonormal basis vectors for the Arm bone as a Matrix.
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.
Leap::Matrix basis = arm.basis(); Leap::Vector xBasis = basis.xBasis; Leap::Vector yBasis = basis.yBasis; Leap::Vector zBasis = basis.zBasis; Leap::Vector armCenter = arm.elbowPosition() + (arm.wristPosition() - arm.elbowPosition()) * .5; Leap::Matrix transform = Leap::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.
- Return
- The basis of the arm bone as a matrix.
- Since
- 2.0.3
Vector center()The center of the forearm.
This location represents the midpoint of the arm between the wrist position and the elbow position.
- Since
- 2.1.0
Vector direction()The normalized direction in which the arm is pointing (from elbow to wrist).
Leap::Vector direction = arm.direction();
- Since
- 2.0.3
Vector elbowPosition()The position of the elbow.
Leap::Vector elbow = arm.elbowPosition();If not in view, the elbow position is estimated based on typical human anatomical proportions.
- Since
- 2.0.3
bool isValid()bool operator!=(const Arm &)bool operator==(const Arm &)std::string toString()float width()Vector wristPosition()The position of the wrist.
Leap::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.
- Since
- 2.0.3
const Arm & invalid()Returns an invalid Arm object.
Leap::Arm arm = Leap::Arm::invalid();
- Return
- The invalid Arm instance.
- Since
- 2.0.3