Bone类(Leap::Bone)

Bone类(Leap::Bone)

这个类代表一个跟踪的骨头。所有的手指都包含4根骨头,构成了手指的结构。需要从一个Finger对象中得到有效的Bone对象。骨头从基部到顶端有序排列,索引从0到3。注意,大拇指是没有基部的掌骨的,因此包含一个有效的0长度的骨头。Bone对象也可以是无效的,可以用Bone::isValid()函数来测试有效性。
enum Type: 表示骨头名称的枚举。如下图。
TYPE_METACARPAL = 0表示与手腕相连的掌骨;
TYPE_PROXIMAL = 1表示与手掌相连的近节指骨。
TYPE_INTERMEDIATE = 2表示顶部和基部之间的中节指骨;
TYPE_DISTAL = 3表示手指顶部的远节指骨。

这里写图片描述

Matrix basis(): 表示这个Bone的标准正交基向量,作为基矩阵输出。基向量指定了一个骨头的方向,定义如下:
xBasis垂直于骨头的纵轴,通过手指外侧离开是指。
yBasis垂直于骨头的纵轴,离开手指的顶部和底部。上面是正方向。
zBasis与骨头的纵轴平行,朝着手指的方向是正方向。
如果用的是右手,所以要用右手定则,左手就要用左手定则。因此,x-Basis的正方向是右手朝右,左手朝左,可以通过在z轴基向量上乘以-1把右手定则转化为左手定则。可以通过基向量来衡量复杂的手指姿态和骨骼动画。注意,把基向量直接转化为四元数表示在数学上并不是有效的,如果要用四元数,要从旋转矩阵中创建而不是直接从基向量转化。
用法:Leap::Matrix basis=bone.basis();
Leap::Vector xBasis=basis.xBasis;
Leap::Vector yBasis=basis.yBasis;
Leap::Vector zBasis=basis.zBasis;
Bone(): 构造一个无效的bone对象。从Finger对象中得到Bone对象。
Vector center(): 表示骨头的中点。
用法:Leap::Vector middle=bone.center();
Vector direction(): 表示骨头由基部到顶部归一化了的方向。
用法:Leap::Bone bone=finger.bone(Leap::Bone::TYPE_DISTAL);
Leap::Vector distalDirection=bone.basis().yBasis;
bool isValid(): 判断这是否是个有效的Bone对象。如果这个对象包含有效的跟踪数据,则返回True。
float length(): 表示骨头的估计长度(毫米)。
用法:float length=bone.length();
Vector nextJoint(): 表示骨头的末端,最接近于手指的顶部。在解剖学方面,这是骨头的末端。返回的是包含下一个关节位置坐标的向量。
用法:Leap::Vector boneEnd=bone.nextJoint();
bool operator!=(const Bone &): 比较Bone对象是否不相等。如果两个对象都是有效的,在同一帧中有且仅有这两个对象表示同样的实体,则这两个对象相等。
用法:thisBone!=thatBone;
bool operator==(const Bone &): 比较Bone对象是否相等。如果两个对象都是有效的,在同一帧中有且仅有这两个对象表示同样的实体,则这两个对象相等。
用法:thisBone==thatBone;
Vector prevJoint(): 表示骨头的始端,最接近于手腕。在解剖学方面,这是骨头的近端。返回的是包含前一个关节位置坐标的向量。
std::string toString(): 一个包含简略描述该Bone对象的字符串。
用法:std::string description=bone.toString();
Type type(): 表示这个骨头的名称。返回的是Bone::Type枚举类型中骨头的类型。
float width(): 表示骨头周围肉的平均宽度。
用法:float width=bone.width();
const Bone & invalid(): 返回一个无效Bone对象。还是用来判断对象是否有效。

译自:https://developer.leapmotion.com/documentation/cpp/api/Leap.Bone.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值