本文整理汇总了C++中Matrix4d::setZero方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix4d::setZero方法的具体用法?C++ Matrix4d::setZero怎么用?C++ Matrix4d::setZero使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix4d
的用法示例。
在下文中一共展示了Matrix4d::setZero方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setTKpts
// translate kpts by 6DOF transformation of frame
void Frame::setTKpts(Eigen::Vector4d trans, Eigen::Quaterniond rot)
{
Vector3d tr;
tr = trans.head<3>();
// set up 3x4 transformation from kpt+disp to kpt
Matrix4d Q;
Q << 1.0, 0.0, 0.0, -cam.cx, // fy should enter in here somewhere...
0.0, 1.0, 0.0, -cam.cy,
0.0, 0.0, 0.0, cam.fx,
0.0, 0.0, 1.0/cam.tx, 0;
Matrix<double,3,4> P;
P << cam.fx, 0.0, cam.cx, 0.0,
0.0, cam.fx, cam.cy, 0.0,
0.0, 0.0, 1.0, 0.0;
// 3D point transform - inverse of frame motion
Matrix4d T;
T.setZero();
Matrix3d R = rot.toRotationMatrix();
T.block<3,3>(0,0) = R.transpose();
T.block<3,1>(0,3) = -R*tr;
T(3,3) = 1.0;
P = P*T*Q;
// go through points and set up transformed ones
tkpts.resize(kpts.size());
Vector4d v(0.0,0.0,0.0,1.0);
for (int i=0; i<(int)kpts.size(); i++)
{
Vector3d vk;
v(0) = kpts[i].pt.x;
v(1) = kpts[i].pt.y;
v(2) = disps[i];
vk = P*v;
tkpts[i].pt.x = vk(0)/vk(2);
tkpts[i].pt.y = vk(1)/vk(2);
}
}