本文整理汇总了C++中eigen::VectorXd::noalias方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorXd::noalias方法的具体用法?C++ VectorXd::noalias怎么用?C++ VectorXd::noalias使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::VectorXd
的用法示例。
在下文中一共展示了VectorXd::noalias方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: aggregateInvAugMassMatrix
void BodyNode::aggregateInvAugMassMatrix(Eigen::MatrixXd* _InvMCol, int _col,
double /*_timeStep*/) {
Eigen::VectorXd MInvCol;
int dof = mParentJoint->getNumGenCoords();
if (dof > 0) {
if (mParentBodyNode) {
MInvCol.noalias() = mImplicitPsi * mInvM_a;
MInvCol.noalias() -= mImplicitAI_S_ImplicitPsi.transpose()
* math::AdInvT(mParentJoint->getLocalTransform(),
mParentBodyNode->mInvM_U);
} else {
MInvCol.noalias() = mImplicitPsi * mInvM_a;
}
assert(!math::isNan(MInvCol));
// Assign
int iStart = mParentJoint->getGenCoord(0)->getSkeletonIndex();
_InvMCol->block(iStart, _col, dof, 1) = MInvCol;
}
if (mChildBodyNodes.size() > 0) {
if (dof > 0)
mInvM_U.noalias() = mParentJoint->getLocalJacobian() * MInvCol;
else
mInvM_U.setZero();
if (mParentBodyNode) {
mInvM_U += math::AdInvT(mParentJoint->getLocalTransform(),
mParentBodyNode->mInvM_U);
}
assert(!math::isNan(mInvM_U));
}
}
示例2: operator
bool operator() (
Eigen::VectorXd& newx,
const Eigen::VectorXd& x,
const Eigen::VectorXd& g,
double step_size) {
newx.noalias() = x - step_size * g;
for (ssize_t n = 0; n < newx.size(); n += 3)
newx.segment (n,3).normalize();
return newx != x;
}
示例3: update_ddq
void BodyNode::update_ddq() {
if (mParentJoint->getNumGenCoords() == 0)
return;
Eigen::VectorXd ddq;
if (mParentBodyNode) {
ddq.noalias() =
mImplicitPsi * (mAlpha - mImplicitAI_S.transpose() *
math::AdInvT(mParentJoint->getLocalTransform(),
mParentBodyNode->getBodyAcceleration()));
} else {
ddq.noalias() = mImplicitPsi * mAlpha;
}
mParentJoint->GenCoordSystem::setGenAccs(ddq);
assert(!math::isNan(ddq));
updateAcceleration();
}
示例4: operator
void operator() (Image<value_type>& fod_img, Image<value_type>& dec_img) {
if (mask_img.valid()) {
assign_pos_of(fod_img, 0, 3).to(mask_img);
if (!mask_img.value()) {
dec_img.row(3).fill(UNIT);
return;
}
}
amps.noalias() = dectrans.sht * fod_img.row(3).cast<double>();
dec.setZero();
ampsum = 0.0;
for (ssize_t i = 0; i < amps.rows(); i++) {
if (!std::isnan(dectrans.thresh) && amps(i) < dectrans.thresh)
continue;
dec += dectrans.decs.row(i) * amps(i);
ampsum += amps(i);
}
dec = dec.cwiseMax(0.0);
ampsum = std::max(ampsum, 0.0);
decnorm = dec.norm();
if (decnorm == 0.0)
dec_img.row(3).fill(UNIT);
else
dec_img.row(3) = (dec / decnorm).cast<value_type>();
if (int_img.valid()) {
assign_pos_of(fod_img, 0, 3).to(int_img);
int_img.value() = (ampsum / amps.rows()) * 4.0 * Math::pi;
}
}
示例5: interpolateToNodes
void interpolateToNodes(Eigen::VectorXd const& src, Eigen::VectorXd &dst) {
if(!is_constructed) {
construct();
}
dst.noalias() = interpolation_matrix*src;
}