Arm

属性:

class Leap.Arm

Arm(手臂) 类表示一个追踪的手前臂。

注意,Arm 对象可以是无效的,这意味着它没有包含任何有效的的追踪数据且不符合一个实际手臂。无效的 Arm 对象能够作为从一个无效 Hand 对象访问一个 Arm 对象的结果。用 Arm 的构造函数创建一个 Arm 对象也可以是无效的。有效对象的检测办法是通过访问 Arm.is_valid() 属性。

New in Version 2.0.3

构造函数

classmethod Arm()

构造一个有效的 Arm 对象。

Hand 对象中获得一个有效的 Arm 对象。

  1. hand = frame.hands.frontmost
  2. arm = hand.arm

返回类型:Arm

New in Version 2.0.3


实例属性

basis

类型:Matrix

一个 Arm 的正交基向量矩阵。

基向量指定了一条手臂的方向。

  • x_basis: 垂直于手臂,沿手腕侧向;
  • y_basis 或 up vector: 垂直于手臂,沿手臂的上下方向,正轴为向上的方向。
  • z_basis:沿手臂方向,正轴指向肘部.
  1. basis = arm.basis
  2. x_basis = basis.x_basis
  3. y_basis = basis.y_basis
  4. z_basis = basis.z_basis
  5. center = arm.elbow_position + (arm.wrist_position - arm.elbow_position) * .05
  6. arm_transform = Leap.Matrix(x_basis, y_basis, z_basis, center)

右手臂使用了右手定则;而左手臂则使用左手定则。因此 右手臂的 x 轴正方向向右,而左手臂的 x 轴正方向向左。你可以通过将基向量乘以 -1 把右手的规则更改为左手定则。

你可以使用上述的基向量作为衡量复杂手势的姿势和骨骼动画的依据。

需要注意的是,将基向量直接转化成一个四元数表示并不是数学意义上有效的。 如果你要使用四元数,不要直接创建它们,而应从旋转矩阵推导创建。

New in Version 2.0.3

direction

类型:Vector

从手臂肘到手腕的单位向量方向。

  1. direction = arm.direction

New in Version 2.0.3

elbow_position

类型:Vector

手臂肘的位置。

  1. elbow = arm.elbow_position

New in Version 2.0.3

is_valid

类型:boolean

返回一个 Arm 对象是否包含有效的数据。

  1. arm = frame.hand(20).arm
  2. if(arm.is_valid):
  3. # ... 使用数据

New in Version 2.0.3

width

类型:float

手臂的平均宽度。

  1. width = arm.width
  2. displacement = arm.wrist_position - arm.elbow_position;
  3. length = displacement.magnitude

New in Version 2.0.3

wrist_position

类型:Vector

手腕的位置。

  1. wrist = arm.wrist_position

New in Version 2.0.3


类属性

invalid

类型: Arm

一个无效的 Arm 对象。

  1. arm = Leap.Arm.invalid

New in Version 2.0.3