Finger类(Leap::Finger)

Finger类(Leap::Finger)

这个类表示一个跟踪的手指。需要从一个Frame或Hand对象中得到有效的Finger对象。手指可能是一直与一只手保持关联,在这种情况下手指ID的顺序将是不变的。当手指移动在视线之内或视线之外,很可能一个手指的ID是错误的。因此,交换手指的ID是必要的。所有的跟踪属性,比如速率,在API中会保持连续。然而,那些来自于API输出的量(比如位置的历史记录)将会是不连续的,除非会有相关的ID交换。Finger其实是一种被判定为手指的Pointable对象。Finger对象也可以是无效的,可以用Finger::isValid()函数来测试有效性。
Note:在官网上的类说明中有很多函数,不过在Leap.h的Finger类中并没有给出声明之类的,因为这些函数与其他类中的同名函数意义是一样的(从函数名可以看出)。
Bone bone(Bone::Type bonelx): 表示这根手指在给定的骨头索引下的那根骨头。返回的是有指定骨头类型的Bone对象。参数bonelx表示Bone::Type枚举类型中的骨头索引值,具体可见Bone::Type。
用法:Leap::FingerList fingers = frame.hands()[0].fingers();
for (Leap::FingerList::const_iterator fl = fingers.begin(); fl != fingers.end(); fl++){
Leap::Bone bone;
Leap::Bone::Type boneType;
for (int b = 0; b < 4; b++)
{
boneType = static_cast(b);
bone = (*fl).bone(boneType);
std::cout << “Finger index: ” << (*fl).type() << ” ” << bone << std::endl;
}
}
enum Type: 枚举手指的名称,通过函数Finger::type()函数返回这个枚举类型中的成员来识别一个Finger对象。
TYPE_THUMB = 0表示大拇指
TYPE_INDEX = 1表示食指
TYPE_MIDDLE = 2表示中指
TYPE_RING = 3表示无名指
TYPE_PINKY = 4表示小拇指
Finger(): 构造一个Finger对象。没有初始化的手指被认为是无效的。从Frame或Hand对象中得到Finger对象。
Finger(const Pointable&): 如果指定的Pointable对象代表一个手指,作为一个Finger对象复制这个对象,否则就创建一个无效的Finger对象。
Vector jointPosition(Joint jointlx): 自版本2.0之后就改用了bone,弃用了这个函数。
Type type(): 表示这根手指的名称。返回的是Finger::Type枚举类型中手指的类型。
用法:Leap::Finger::Type fingerType=finger.type();
std::string toString(): 一个包含简略描述该Finger对象的字符串。
const Finger & invalid(): 返回一个无效Finger对象。还是用来判断对象是否有效。

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

你可能感兴趣的:(Leap,Motion,leap-motion)