本文整理汇总了C++中PointType::Fill方法的典型用法代码示例。如果您正苦于以下问题:C++ PointType::Fill方法的具体用法?C++ PointType::Fill怎么用?C++ PointType::Fill使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PointType
的用法示例。
在下文中一共展示了PointType::Fill方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TestClosestValueIndex
bool TestClosestValueIndex()
{
typedef itk::CovariantVector<float, 3> PointType;
std::vector<PointType> vec;
PointType a;
a.Fill(1.1);
vec.push_back(a);
PointType b;
b.Fill(2.1);
vec.push_back(b);
PointType c;
c.Fill(3.1);
vec.push_back(c);
PointType query;
query.Fill(1.2);
unsigned int closestId = ITKHelpers::ClosestValueIndex(vec, query);
std::cout << "Closest point to " << query << " is " << vec[closestId] << std::endl;
return true;
}
示例2: if
int mitk::PointSet::SearchPoint( Point3D point, float distance, int t ) const
{
if ( t >= (int)m_PointSetSeries.size() )
{
return -1;
}
// Out is the point which is checked to be the searched point
PointType out;
out.Fill( 0 );
PointType indexPoint;
this->GetGeometry( t )->WorldToIndex(point, indexPoint);
// Searching the first point in the Set, that is +- distance far away fro
// the given point
unsigned int i;
PointsContainer::Iterator it, end;
end = m_PointSetSeries[t]->GetPoints()->End();
int bestIndex = -1;
distance = distance * distance;
// To correct errors from converting index to world and world to index
if (distance == 0.0)
{
distance = 0.000001;
}
ScalarType bestDist = distance;
ScalarType dist, tmp;
for ( it = m_PointSetSeries[t]->GetPoints()->Begin(), i = 0;
it != end;
++it, ++i )
{
bool ok = m_PointSetSeries[t]->GetPoints()
->GetElementIfIndexExists( it->Index(), &out );
if ( !ok )
{
return -1;
}
else if ( indexPoint == out ) //if totally equal
{
return it->Index();
}
//distance calculation
tmp = out[0] - indexPoint[0]; dist = tmp * tmp;
tmp = out[1] - indexPoint[1]; dist += tmp * tmp;
tmp = out[2] - indexPoint[2]; dist += tmp * tmp;
if ( dist < bestDist )
{
bestIndex = it->Index();
bestDist = dist;
}
}
return bestIndex;
}
示例3:
mitk::PointSet::PointType
mitk::PointSet::GetPoint( PointIdentifier id, int t ) const
{
PointType out;
out.Fill(0);
if ( (unsigned int) t >= m_PointSetSeries.size() )
{
return out;
}
if ( m_PointSetSeries[t]->GetPoints()->IndexExists(id) )
{
m_PointSetSeries[t]->GetPoint( id, &out );
this->GetGeometry(t)->IndexToWorld( out, out );
return out;
}
else
{
return out;
}
}
示例4: PointOperation
//.........这里部分代码省略.........
// newPoints[i] = pIdC;
// }
// else
// newPoints[i] = (*pit);
// pit++;
// }
// //now we have the Ids, that existed before combined with the new ones
// //so delete the old cell
// //doesn't seem to be necessary!
// //cell->ClearPoints();
// pit = cell->PointIdsBegin();
// cell->SetPointIds(pit);
//}
break;
case OpMOVELINE://(moves two points)
{
mitk::LineOperation *lineOp =
dynamic_cast<mitk::LineOperation *>(operation);
if (lineOp == nullptr)
{
mitk::StatusBar::GetInstance()->DisplayText(
"Message from mitkMesh: Recieved wrong type of operation! See mitkMeshInteractor.cpp", 10000);
return;
}
//create two operations out of the one operation and call superclass
//through the transmitted pointIds get the koordinates of the points.
//then add the transmitted vestor to them
//create two operations and send them to superclass
Point3D pointA, pointB;
pointA.Fill(0.0);
pointB.Fill(0.0);
m_PointSetSeries[0]->GetPoint(lineOp->GetPIdA(), &pointA);
m_PointSetSeries[0]->GetPoint(lineOp->GetPIdB(), &pointB);
pointA[0] += lineOp->GetVector()[0];
pointA[1] += lineOp->GetVector()[1];
pointA[2] += lineOp->GetVector()[2];
pointB[0] += lineOp->GetVector()[0];
pointB[1] += lineOp->GetVector()[1];
pointB[2] += lineOp->GetVector()[2];
auto operationA =
new mitk::PointOperation(OpMOVE, pointA, lineOp->GetPIdA());
auto operationB =
new mitk::PointOperation(OpMOVE, pointB, lineOp->GetPIdB());
Superclass::ExecuteOperation(operationA);
Superclass::ExecuteOperation(operationB);
}
break;
case OpSELECTLINE://(select the given line)
{
mitk::LineOperation *lineOp =
dynamic_cast<mitk::LineOperation *>(operation);
if (lineOp == nullptr)//if no lineoperation, then call superclass pointSet
{
Superclass::ExecuteOperation(operation);
}
int cellId = lineOp->GetCellId();
CellAutoPointer cellAutoPointer;
bool ok = m_PointSetSeries[0]->GetCell(cellId, cellAutoPointer);
示例5: mexFunction
/*
* mexFunction(): entry point for the mex function
*/
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
// interface to deal with input arguments from Matlab
enum InputIndexType {IN_TRI, IN_X, IN_RES, IN_SIZE, IN_ORIGIN, InputIndexType_MAX};
MatlabImportFilter::Pointer matlabImport = MatlabImportFilter::New();
matlabImport->ConnectToMatlabFunctionInput(nrhs, prhs);
// check the number of input arguments
matlabImport->CheckNumberOfArguments(2, InputIndexType_MAX);
// register the inputs for this function at the import filter
typedef MatlabImportFilter::MatlabInputPointer MatlabInputPointer;
MatlabInputPointer inTRI = matlabImport->RegisterInput(IN_TRI, "TRI");
MatlabInputPointer inX = matlabImport->RegisterInput(IN_X, "X"); // (x, y, z)
MatlabInputPointer inRES = matlabImport->RegisterInput(IN_RES, "RES"); // (r, c, s)
MatlabInputPointer inSIZE = matlabImport->RegisterInput(IN_SIZE, "SIZE"); // (r, c, s)
MatlabInputPointer inORIGIN = matlabImport->RegisterInput(IN_ORIGIN, "ORIGIN"); // (x, y, z)
// interface to deal with outputs to Matlab
enum OutputIndexType {OUT_IM, OutputIndexType_MAX};
MatlabExportFilter::Pointer matlabExport = MatlabExportFilter::New();
matlabExport->ConnectToMatlabFunctionOutput(nlhs, plhs);
// check that the number of outputs the user is asking for is valid
matlabExport->CheckNumberOfArguments(0, OutputIndexType_MAX);
// register the outputs for this function at the export filter
typedef MatlabExportFilter::MatlabOutputPointer MatlabOutputPointer;
MatlabOutputPointer outIM = matlabExport->RegisterOutput(OUT_IM, "IM");
// if any input point set is empty, the outputs are empty too
if (mxIsEmpty(inTRI->pm) || mxIsEmpty(inX->pm)) {
matlabExport->CopyEmptyArrayToMatlab(outIM);
return;
}
// get number of rows in inputs X and TRI
mwSize nrowsX = mxGetM(inX->pm);
mwSize nrowsTRI = mxGetM(inTRI->pm);
// instantiate mesh
MeshType::Pointer mesh = MeshType::New();
// read vertices
PointSetType::Pointer xDef = PointSetType::New(); // default: empty point set
PointSetType::Pointer x = PointSetType::New();
x->GetPoints()->CastToSTLContainer()
= matlabImport->ReadVectorOfVectorsFromMatlab<PointType::CoordRepType, PointType>
(inX, xDef->GetPoints()->CastToSTLContainer());
#ifdef DEBUG
std::cout << "Number of X points read = " << x->GetNumberOfPoints() << std::endl;
#endif
// assertion check
if (nrowsX != x->GetNumberOfPoints()) {
mexErrMsgTxt(("Input " + inX->name
+ ": Number of points read different from number of points provided by user").c_str());
}
// swap XY coordinates to make them compliant with ITK convention
// (see important programming note at the help header above)
matlabImport->SwapXYInVectorOfVectors<PointType::CoordRepType, std::vector<PointType> >
(x->GetPoints()->CastToSTLContainer(), x->GetNumberOfPoints());
// populate mesh with vertices
mesh->SetPoints(x->GetPoints());
// read triangles
PointType triDef;
triDef.Fill(mxGetNaN());
for (mwIndex i = 0; i < nrowsTRI; ++i) {
PointType triangle = matlabImport->ReadRowVectorFromMatlab<CoordType, PointType>(inTRI, i, triDef);
// create a triangle cell to read the vertex indices of the current input triangle
CellAutoPointer cell;
cell.TakeOwnership(new TriangleType);
// assign to the 0, 1, 2 elements in the triangle cell the vertex
// indices that we have just read. Note that we have to substract
// 1 to convert Matlab's index convention 1, 2, 3, ... to C++
// convention 0, 1, 2, ...
cell->SetPointId(0, triangle[0] - 1);
cell->SetPointId(1, triangle[1] - 1);
cell->SetPointId(2, triangle[2] - 1);
// insert cell into the mesh
mesh->SetCell(i, cell);
}
#ifdef DEBUG
std::cout << "Number of triangles read = " << mesh->GetNumberOfCells() << std::endl;
#endif
// assertion check
if (nrowsTRI != mesh->GetNumberOfCells()) {
//.........这里部分代码省略.........