bool JointHitDetector:: DetectHit ( ofxVec3f& vDir)
{
int numTrackedPoints = mPoints.size ( ) ;
if ( numTrackedPoints < 3 )
return false ;
ofxVec3f A = mPoints[ 1 ] - mPoints[ 0 ] ;
ofxVec3f B = mPoints[ 2 ] - mPoints[ 1 ] ;
for ( int i= 2 ; i<= numTrackedPoints; ++ i)
{
//printf("*** i = %i\n", i);
//printf("A = (%f,%f,%f) B = (%f,%f,%f)\n", A.x, A.y, A.z, B.x, B.y, B.z);
ofxVec3f C = mPoints[ numTrackedPoints > i ? i : i- 1 ] - mPoints[ i- 1 ] ;
ofxVec3f normA = A.getNormalized ( ) ;
ofxVec3f normB = B.getNormalized ( ) ;
static float _shortEnough = 30.0f ;
if ( LongEnough( A) && ( normA.dot ( normB) < .1f || B.length ( ) < _shortEnough) )
{
vDir = A;
for ( int j= 0 ; j< i; ++ j) //erase the A part, keep the B
mPoints.erase ( mPoints.begin ( ) ) ;
return true ;
}
else if ( normA.dot ( normB) > .8f || ( LongEnough( A) && normA.dot ( normB) > .4f ) )
{
A = A+ B; B = C;
}
else
{
A = B; B = C;
}
}
return false ;
}
bool JointHitDetector:: LongEnough ( const ofxVec3f& vec) const
{
return vec.lengthSquared ( ) > mRequiredLength * mRequiredLength;
}
Ym9vbCBKb2ludEhpdERldGVjdG9yOjpEZXRlY3RIaXQob2Z4VmVjM2YmIHZEaXIpCnsKCWludCBudW1UcmFja2VkUG9pbnRzID0gbVBvaW50cy5zaXplKCk7CglpZiAobnVtVHJhY2tlZFBvaW50cyA8IDMpCgkJcmV0dXJuIGZhbHNlOwogICAKCW9meFZlYzNmIEEgPSBtUG9pbnRzWzFdIC0gbVBvaW50c1swXTsKCW9meFZlYzNmIEIgPSBtUG9pbnRzWzJdIC0gbVBvaW50c1sxXTsKICAgCglmb3IgKGludCBpPTI7IGk8PW51bVRyYWNrZWRQb2ludHM7ICsraSkKCXsKICAgICAgLy9wcmludGYoIioqKiBpID0gJWlcbiIsIGkpOwogICAgICAvL3ByaW50ZigiQSA9ICglZiwlZiwlZikgICBCID0gKCVmLCVmLCVmKVxuIiwgQS54LCBBLnksIEEueiwgQi54LCBCLnksIEIueik7CgkJb2Z4VmVjM2YgQyA9IG1Qb2ludHNbbnVtVHJhY2tlZFBvaW50cyA+IGkgPyBpIDogaS0xXSAtIG1Qb2ludHNbaS0xXTsKICAgICAgb2Z4VmVjM2Ygbm9ybUEgPSBBLmdldE5vcm1hbGl6ZWQoKTsKICAgICAgb2Z4VmVjM2Ygbm9ybUIgPSBCLmdldE5vcm1hbGl6ZWQoKTsKICAgICAgCiAgICAgIHN0YXRpYyBmbG9hdCBfc2hvcnRFbm91Z2ggPSAzMC4wZjsKICAgICAgaWYgKExvbmdFbm91Z2goQSkgJiYgKG5vcm1BLmRvdChub3JtQikgPCAuMWYgfHwgQi5sZW5ndGgoKSA8IF9zaG9ydEVub3VnaCkpCiAgICAgIHsKICAgICAgICAgdkRpciA9IEE7CiAgICAgICAgIGZvciAoaW50IGo9MDsgajxpOyArK2opIC8vZXJhc2UgdGhlIEEgcGFydCwga2VlcCB0aGUgQgogICAgICAgICAgICBtUG9pbnRzLmVyYXNlKG1Qb2ludHMuYmVnaW4oKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CgkJZWxzZSBpZiAobm9ybUEuZG90KG5vcm1CKSA+IC44ZiB8fCAoTG9uZ0Vub3VnaChBKSAmJiBub3JtQS5kb3Qobm9ybUIpID4gLjRmKSkKCQl7CgkJCUEgPSBBK0I7IEIgPSBDOwoJCX0KCQllbHNlCgkJewoJCQlBID0gQjsgQiA9IEM7CgkJfQoJfQogICAKCXJldHVybiBmYWxzZTsKfQoKYm9vbCBKb2ludEhpdERldGVjdG9yOjpMb25nRW5vdWdoKGNvbnN0IG9meFZlYzNmJiB2ZWMpIGNvbnN0CnsKICAgcmV0dXJuIHZlYy5sZW5ndGhTcXVhcmVkKCkgPiBtUmVxdWlyZWRMZW5ndGggKiBtUmVxdWlyZWRMZW5ndGg7Cn0=
compilation info
prog.cpp:1: error: ‘JointHitDetector’ has not been declared
prog.cpp:1: error: ‘ofxVec3f’ was not declared in this scope
prog.cpp:1: error: ‘vDir’ was not declared in this scope
prog.cpp:2: error: expected ‘,’ or ‘;’ before ‘{’ token
stdout