本文整理汇总了C++中Matrix3f::row方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix3f::row方法的具体用法?C++ Matrix3f::row怎么用?C++ Matrix3f::row使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix3f
的用法示例。
在下文中一共展示了Matrix3f::row方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setViewport
void MiniGL::setViewport (float pfovy, float pznear, float pzfar, const Vector3f &peyepoint, const Vector3f &plookat)
{
fovy = pfovy;
znear = pznear;
zfar = pzfar;
glLoadIdentity ();
gluLookAt (peyepoint [0], peyepoint [1], peyepoint [2], plookat[0], plookat[1], plookat[2], 0, 1, 0);
Matrix4f transformation;
float *lookAtMatrix = transformation.data();
glGetFloatv (GL_MODELVIEW_MATRIX, &lookAtMatrix[0]);
Matrix3f rot;
Vector3f scale;
transformation.transposeInPlace();
rot.row(0) = Vector3f (transformation(0,0), transformation(0,1), transformation(0,2));
rot.row(1) = Vector3f (transformation(1,0), transformation(1,1), transformation(1,2));
rot.row(2) = Vector3f (transformation(2,0), transformation(2,1), transformation(2,2));
scale[0] = rot.col(0).norm();
scale[1] = rot.col(1).norm();
scale[2] = rot.col(2).norm();
m_translation = Vector3f (transformation(3,0), transformation(3,1), transformation(3,2));
rot.col(0) = 1.0f/scale[0] * rot.col(0);
rot.col(1) = 1.0f/scale[1] * rot.col(1);
rot.col(2) = 1.0f/scale[2] * rot.col(2);
m_zoom = scale[0];
m_rotation = Quaternionf(rot);
glLoadIdentity ();
}
示例2: SetView
void Camera::SetView(const Vector3f &position, const Vector3f &target,
const Vector3f &up) {
Matrix3f rotation;
rotation.row(1) = up.normalized();
rotation.row(2) = (position - target).normalized();
rotation.row(0) = rotation.row(1).cross(rotation.row(2));
view_.topLeftCorner<3, 3>() = rotation;
view_.topRightCorner<3, 1>() = -rotation * position;
view_(3, 3) = 1.0;
matrix_dirty_ = true;
}
示例3: main
int main(int, char**)
{
cout.precision(3);
Matrix3f m;
m.row(0) << 1, 2, 3;
m.block(1,0,2,2) << 4, 5, 7, 8;
m.col(2).tail(2) << 6, 9;
std::cout << m;
return 0;
}
示例4: svd
Eigen::Matrix4f ConsistencyTest::initPose( std::map<unsigned, unsigned> &matched_planes )
{
//Calculate rotation
Matrix3f normalCovariances = Matrix3f::Zero();
for(map<unsigned, unsigned>::iterator it = matched_planes.begin(); it != matched_planes.end(); it++)
normalCovariances += PBMTarget.vPlanes[it->second].v3normal * PBMSource.vPlanes[it->first].v3normal.transpose();
JacobiSVD<MatrixXf> svd(normalCovariances, ComputeThinU | ComputeThinV);
Matrix3f Rotation = svd.matrixU() * svd.matrixV().transpose();
if(Rotation.determinant() < 0)
Rotation.row(2) *= -1;
// Rotation = -Rotation;
// Calculate translation
Vector3f translation;
Vector3f center_data = Vector3f::Zero(), center_model = Vector3f::Zero();
Vector3f centerFull_data = Vector3f::Zero(), centerFull_model = Vector3f::Zero();
unsigned numFull = 0, numNonStruct = 0;
for(map<unsigned, unsigned>::iterator it = matched_planes.begin(); it != matched_planes.end(); it++)
{
if(PBMSource.vPlanes[it->first].bFromStructure) // The certainty in center of structural planes is too low
continue;
++numNonStruct;
center_data += PBMSource.vPlanes[it->first].v3center;
center_model += PBMTarget.vPlanes[it->second].v3center;
if(PBMSource.vPlanes[it->first].bFullExtent)
{
centerFull_data += PBMSource.vPlanes[it->first].v3center;
centerFull_model += PBMTarget.vPlanes[it->second].v3center;
++numFull;
}
}
if(numFull > 0)
{
translation = (centerFull_model - Rotation * centerFull_data) / numFull;
// translation = (centerFull_data - Rotation * centerFull_model) / numFull;
}
else
{
translation = (center_model - Rotation * center_data) / numNonStruct;
// translation = (center_data - Rotation * center_model) / numNonStruct;
}
// Form SE3 transformation matrix. This matrix maps the model into the current data reference frame
Eigen::Matrix4f rigidTransf;
rigidTransf.block(0,0,3,3) = Rotation;
rigidTransf.block(0,3,3,1) = translation;
rigidTransf.row(3) << 0,0,0,1;
return rigidTransf;
}
示例5: visualizerShowCamera
void visualizerShowCamera(const Matrix3f& R, const Vector3f& _t, float r, float g, float b, double s = 0.01 /*downscale factor*/, const std::string& name = "") {
std::string name_ = name,line_name = name + "line";
if (name.length() <= 0) {
stringstream ss; ss<<"camera"<<iCamCounter++;
name_ = ss.str();
ss << "line";
line_name = ss.str();
}
Vector3f t = -R.transpose() * _t;
Vector3f vright = R.row(0).normalized() * s;
Vector3f vup = -R.row(1).normalized() * s;
Vector3f vforward = R.row(2).normalized() * s;
Vector3f rgb(r,g,b);
pcl::PointCloud<pcl::PointXYZRGB> mesh_cld;
mesh_cld.push_back(Eigen2PointXYZRGB(t,rgb));
mesh_cld.push_back(Eigen2PointXYZRGB(t + vforward + vright/2.0 + vup/2.0,rgb));
mesh_cld.push_back(Eigen2PointXYZRGB(t + vforward + vright/2.0 - vup/2.0,rgb));
mesh_cld.push_back(Eigen2PointXYZRGB(t + vforward - vright/2.0 + vup/2.0,rgb));
mesh_cld.push_back(Eigen2PointXYZRGB(t + vforward - vright/2.0 - vup/2.0,rgb));
//TODO Mutex acquire
pcl::PolygonMesh pm;
pm.polygons.resize(6);
for(int i=0;i<6;i++)
for(int _v=0;_v<3;_v++)
pm.polygons[i].vertices.push_back(ipolygon[i*3 + _v]);
pcl::toROSMsg(mesh_cld,pm.cloud);
bShowCam = true;
cam_meshes.push_back(std::make_pair(name_,pm));
//TODO mutex release
linesToShow.push_back(std::make_pair(line_name,
AsVector(Eigen2Eigen(t,rgb),Eigen2Eigen(t + vforward*3.0,rgb))
));
}
示例6: main
int main()
{
Matrix3f m;
m << 1, 2, 3,
4, 5, 6,
7, 8, 9;
std::cout << m << std::endl;
RowVectorXd vec1(3);
vec1 << 1, 2, 3;
std::cout << "vec1 = " << vec1 << std::endl;
RowVectorXd vec2(4);
vec2 << 1, 4, 9, 16;;
std::cout << "vec2 = " << vec2 << std::endl;
RowVectorXd joined(7);
joined << vec1, vec2;
std::cout << "joined = " << joined << std::endl;
MatrixXf matA(2, 2);
matA << 1, 2, 3, 4;
MatrixXf matB(4, 4);
matB << matA, matA/10, matA/10, matA;
std::cout << matB << std::endl;
{
Matrix3f m;
m.row(0) << 1, 2, 3;
m.block(1,0,2,2) << 4, 5, 7, 8;
m.col(2).tail(2) << 6, 9;
std::cout << m << std::endl;
}
return 0;
}