Arm类(Leap::Arm)

本文深入探讨了Leap Motion SDK中的Arm类,解释了其关键属性和方法,如构造函数、基向量获取、中心点和方向计算,以及如何在实际应用中使用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Arm类(Leap::Arm)

这个类代表了前臂。
Arm(): 构造一个无效的Arm对象。需要从Hand对象得到有效的Arm对象。
用法:Leap::Hand hand=frame.hands().frontmost();
Leap::Arm arm=hand.arm();
Matrix basis(): 表示Arm对象中骨头的标准正交基向量,作为矩阵输出,基向量指定了骨头的方向。
xBasis垂直于骨头的纵轴,通过手腕外侧离开手臂。
yBasis垂直于骨头的纵轴,离开手臂的顶部和底部。上面是正方向。
zBasis与臂骨的纵轴平行,朝着手腕的方向是正方向。
如果用的是右臂,所以要用右手定则,左臂就要用左手定则。因此,x-Basis的正方向是右臂朝右,左臂朝左。注意,把基向量直接转化为四元数表示在数学上并不是有效的,如果要用四元数,要从旋转矩阵中创建而不是直接从基向量转化。
用法:Leap::Matrix basis=arm.basis();
Leap::Vector xBasis=basis.xBasis;
Leap::Vector yBasis=basis.yBasis;
Leap::Vector zBasis=basis.zBasis;
Leap::VectorarmCenter=arm.elbowPosition()+
(arm.wristPosition()-arm.elbowPosition())*.5;
Leap::Matrix transform=Leap::Matrix(xBasis, yBasis, zBasis,armCenter);
Vector center(): 表示前臂的中心。这个位置表示手腕位置和手肘位置之间手臂的中点。
Vector direction(): 表示手臂(从腕到肘)指向的归一化了的方向。
用法:Leap::Vector direction=arm.direction();
Vector elbowPosition(): 表示手肘的位置。如果不在视线内,则基于典型的人体结构比例来估计手肘位置。
用法:Leap::Vector elbow=arm.elbowPosition();
bool isValid(): 判断这是否是个有效的Arm对象。如果这个对象包含有效的跟踪数据,则返回True。
bool operator!=(const Arm &): 比较Arm对象是否不相等。如果两个对象都是有效的,在同一帧中有且仅有这两个对象表示同样的实体,则这两个对象相等。
用法:thisArm!=thatArm;
bool operator==(const Arm &): 比较Arm对象是否相等。如果两个对象都是有效的,在同一帧中有且仅有这两个对象表示同样的实体,则这两个对象相等。
用法:thisArm==thatArm;
std::string toString(): 一个包含简略描述该对象的字符串。
float width(): 表示手臂的平均宽度(毫米)。
用法:float width=arm.width();
Vector wristPosition(): 表示手腕的位置。注意,手腕的位置不是与手中任何骨头的尽头连用,这里有几厘米的差距,因为腕骨并不包括在骨架模型里。
const Arm & invalid(): 返回一个无效的Arm对象。还是用来判断对象是否有效。
用法:Leap::Arm arm=Leap::Arm::invalid();

引自:https://developer.leapmotion.com/documentation/cpp/api/Leap.Arm.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值