本文整理汇总了C++中eigen::Matrix::setConstant方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix::setConstant方法的具体用法?C++ Matrix::setConstant怎么用?C++ Matrix::setConstant使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::Matrix
的用法示例。
在下文中一共展示了Matrix::setConstant方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: line_texture
// Create a texture that hides the integer translation in the parametrization
void line_texture(Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> &texture_R,
Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> &texture_G,
Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> &texture_B)
{
unsigned size = 128;
unsigned size2 = size/2;
unsigned lineWidth = 3;
texture_R.setConstant(size, size, 255);
for (unsigned i=0; i<size; ++i)
for (unsigned j=size2-lineWidth; j<=size2+lineWidth; ++j)
texture_R(i,j) = 0;
for (unsigned i=size2-lineWidth; i<=size2+lineWidth; ++i)
for (unsigned j=0; j<size; ++j)
texture_R(i,j) = 0;
texture_G = texture_R;
texture_B = texture_R;
}
示例2: pStep
Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> Interpolation::generate_DEM(PointCloudElement* pElement, float post_spacing)
{
StepResource pStep("Generating DEM", "app", "ffe16048-1e58-11e4-b4be-b2227cce2b54");
ProgressResource pResource("ProgressBar");
Progress *pProgress = pResource.get();
pProgress-> setSettingAutoClose(true);
Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> demRM;// dem stored in a Row major eigen matrix
/* Main processing loop */
FactoryResource<PointCloudDataRequest> req;
req->setWritable(true);
PointCloudAccessor acc(pElement->getPointCloudAccessor(req.release()));
if (!acc.isValid())
{
interpolation_msg += "Unable to write to point cloud for generating DEM.\n";
pProgress->updateProgress("Unable to write to point cloud for generating DEM.", 0, ERRORS);
pStep->finalize(Message::Abort, interpolation_msg);
return demRM.matrix(); // in this way it should return NULL matrix, see http://eigen.tuxfamily.org/dox/classEigen_1_1Matrix.html: Matrix(): For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix is called a null matrix. This constructor is the unique way to create null matrices: resizing a matrix to 0 is not supported.
}
const PointCloudDataDescriptor* pDesc = static_cast<const PointCloudDataDescriptor*>(pElement->getDataDescriptor());
double xMin = pDesc->getXMin() * pDesc->getXScale() + pDesc->getXOffset();
double xMax = pDesc->getXMax() * pDesc->getXScale() + pDesc->getXOffset();
double yMin = pDesc->getYMin() * pDesc->getYScale() + pDesc->getYOffset();
double yMax = pDesc->getYMax() * pDesc->getYScale() + pDesc->getYOffset();
int mDim = static_cast<int>(std::ceil((xMax - xMin) / post_spacing)); //columns
int nDim = static_cast<int>(std::ceil((yMax - yMin) / post_spacing)); //rows
xMax = xMin + mDim * post_spacing;
yMin = yMax - nDim * post_spacing;
const float badVal = -9999.f;
demRM.setConstant(nDim, mDim, badVal);
int prog = 0;
uint32_t adv = pDesc->getPointCount() / 100;
for (size_t idx = 0; idx < pDesc->getPointCount(); ++idx)
{
if (!acc.isValid())
{
interpolation_msg += "Unable to access data for generating DEM.\n";
pProgress->updateProgress("Unable to access data for generating DEM.", 0, ERRORS);
pStep->finalize(Message::Abort, interpolation_msg);
return demRM.matrix();// in this way it should return NULL matrix, see http://eigen.tuxfamily.org/dox/classEigen_1_1Matrix.html: Matrix(): For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix is called a null matrix. This constructor is the unique way to create null matrices: resizing a matrix to 0 is not supported.
}
if (idx % adv == 0)
{
pProgress->updateProgress("Generating DEM", ++prog, NORMAL);
}
if (!acc->isPointValid())
{
acc->nextValidPoint();
continue;
}
double x = acc->getXAsDouble(true);
double y = acc->getYAsDouble(true);
float z = static_cast<float>(acc->getZAsDouble(true));
// calculate nearest DEM point
int xIndex = std::max(0, static_cast<int>(std::floor((x - xMin) / post_spacing)));
int yIndex = std::max(0, static_cast<int>(std::floor((yMax - y) / post_spacing)));
float demVal = demRM(yIndex, xIndex);
if (demVal == badVal || demVal < z)
{
demRM(yIndex, xIndex) = z;
}
acc->nextValidPoint();
}
pProgress->updateProgress("DEM generation is complete.", 100, NORMAL);
pStep->finalize();
return demRM;
}