1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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=
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
-
result: Compilation error (maybe you wish to see an example for C++ 4.7.2)


