本文整理汇总了C++中Joint::computeForwardEnergy方法的典型用法代码示例。如果您正苦于以下问题:C++ Joint::computeForwardEnergy方法的具体用法?C++ Joint::computeForwardEnergy怎么用?C++ Joint::computeForwardEnergy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Joint
的用法示例。
在下文中一共展示了Joint::computeForwardEnergy方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: funcSize
int SkeletonFitting::funcSize(void* p, int m, int n, const double* x, double* fvec, int iflag)
{
if (!p)
throw Exception("invalid data");
Payload* thisPayload = (Payload*)p;
Joint* joint = (JointHinge*)thisPayload->joint;
// compute energy
joint->addBoneSize(x[0]);
joint->updateForward(false);
fvec[0] = joint->computeForwardEnergy();
// reset
joint->addBoneSize(-x[0]);
joint->updateForward(false);
return iflag;
}
示例2: funcPos
int SkeletonFitting::funcPos(void* p, int m, int n, const double* x, double* fvec, int iflag)
{
if (!p)
throw Exception("invalid data");
Payload* thisPayload = (Payload*)p;
Joint* joint = thisPayload->joint;
// store state
cv::Point3d pos = joint->getPos3d();
switch (thisPayload->axis) {
case 0:
joint->addPos3d(cv::Point3d(x[0], 0, 0));
break;
case 1:
joint->addPos3d(cv::Point3d(0, x[0], 0));
break;
case 2:
joint->addPos3d(cv::Point3d(0, 0, x[0]));
break;
default:
throw Exception("invalid parameter");
break;
}
// compute energy
joint->updateForward(false);
fvec[0] = joint->computeForwardEnergy();
// reset
joint->setPos3d(pos);
joint->updateForward(false);
return iflag;
}