本文整理汇总了C++中dataCheck函数的典型用法代码示例。如果您正苦于以下问题:C++ dataCheck函数的具体用法?C++ dataCheck怎么用?C++ dataCheck使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dataCheck函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ChangeAngleRepresentation::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
int64_t totalPoints = static_cast<int64_t>(m_CellEulerAnglesPtr.lock()->getNumberOfTuples());
#ifdef DREAM3D_USE_PARALLEL_ALGORITHMS
tbb::task_scheduler_init init;
bool doParallel = true;
#endif
float conversionFactor = 1.0f;
if (m_ConversionType == DREAM3D::EulerAngleConversionType::DegreesToRadians)
{
conversionFactor = static_cast<float>( M_PI / 180.0f );
}
else if (conversionFactor == DREAM3D::EulerAngleConversionType::RadiansToDegrees)
{
conversionFactor = static_cast<float>( 180.0f / M_PI );
}
totalPoints *= 3;
// qDebug() << "ChangeAngleRepresentation: " << m_ConversionFactor << "\n";
#ifdef DREAM3D_USE_PARALLEL_ALGORITHMS
if (doParallel == true)
{
tbb::parallel_for(tbb::blocked_range<size_t>(0, totalPoints),
ChangeAngleRepresentationImpl(m_CellEulerAngles, conversionFactor), tbb::auto_partitioner());
}
else
#endif
{
ChangeAngleRepresentationImpl serial(m_CellEulerAngles, conversionFactor);
serial.convert(0, totalPoints);
}
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:ravishivaraman,项目名称:DREAM3D,代码行数:43,代码来源:ChangeAngleRepresentation.cpp
示例2: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void InitializeData::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(m_CellAttributeMatrixPath.getDataContainerName());
size_t udims[3] =
{ 0, 0, 0 };
m->getGeometryAs<ImageGeom>()->getDimensions(udims);
#if (CMP_SIZEOF_SIZE_T == 4)
typedef int32_t DimType;
#else
typedef int64_t DimType;
#endif
DimType dims[3] =
{ static_cast<DimType>(udims[0]), static_cast<DimType>(udims[1]), static_cast<DimType>(udims[2]), };
int index;
QString attrMatName = m_CellAttributeMatrixPath.getAttributeMatrixName();
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
for (int32_t k = m_ZMin; k < m_ZMax + 1; k++)
{
for (int32_t j = m_YMin; j < m_YMax + 1; j++)
{
for (int32_t i = m_XMin; i < m_XMax + 1; i++)
{
index = (k * dims[0] * dims[1]) + (j * dims[0]) + i;
for (QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
p->initializeTuple(index, 0);
}
}
}
}
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:kglowins,项目名称:DREAM3D,代码行数:43,代码来源:InitializeData.cpp
示例3: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void GroupMicroTextureRegions::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
// Convert user defined tolerance to radians.
caxisTolerance = m_CAxisTolerance * SIMPLib::Constants::k_Pi / 180.0f;
avgCaxes[0] = 0.0f;
avgCaxes[1] = 0.0f;
avgCaxes[2] = 0.0f;
GroupFeatures::execute();
size_t totalFeatures = m_ActivePtr.lock()->getNumberOfTuples();
if (totalFeatures < 2)
{
setErrorCondition(-87000);
notifyErrorMessage(getHumanLabel(), "The number of grouped Features was 0 or 1 which means no grouped Features were detected. A grouping value may be set too high", getErrorCondition());
return;
}
int64_t totalPoints = static_cast<int64_t>(m_FeatureIdsPtr.lock()->getNumberOfTuples());
for (int64_t k = 0; k < totalPoints; k++)
{
int32_t featurename = m_FeatureIds[k];
m_CellParentIds[k] = m_FeatureParentIds[featurename];
}
// By default we randomize grains
if (true == m_RandomizeParentIds)
{
randomizeFeatureIds(totalPoints, totalFeatures);
}
// If there is an error set this to something negative and also set a message
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:kglowins,项目名称:DREAM3D,代码行数:42,代码来源:GroupMicroTextureRegions.cpp
示例4: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void FindCellQuats::execute()
{
setErrorCondition(0);
VoxelDataContainer* m = getVoxelDataContainer();
if(NULL == m)
{
setErrorCondition(-999);
notifyErrorMessage("The DataContainer Object was NULL", -999);
return;
}
setErrorCondition(0);
std::stringstream ss;
int64_t totalPoints = m->getTotalPoints();
size_t totalFields = m->getNumFieldTuples();
size_t totalEnsembles = m->getNumEnsembleTuples();
dataCheck(false, totalPoints, totalFields, totalEnsembles);
if (getErrorCondition() < 0)
{
return;
}
QuatF* quats = reinterpret_cast<QuatF*>(m_Quats);
QuatF qr;
int phase = -1;
for (int i = 0; i < totalPoints; i++)
{
phase = m_CellPhases[i];
OrientationMath::EulertoQuat(qr, m_CellEulerAngles[3 * i], m_CellEulerAngles[3 * i + 1], m_CellEulerAngles[3 * i + 2]);
QuaternionMathF::UnitQuaternion(qr);
if (m_CrystalStructures[phase] == Ebsd::CrystalStructure::UnknownCrystalStructure)
{
QuaternionMathF::Identity(qr);
}
QuaternionMathF::Copy(qr, quats[i]);
}
notifyStatusMessage("Complete");
}
开发者ID:mahendra-ramajayam,项目名称:DREAM3D,代码行数:42,代码来源:FindCellQuats.cpp
示例5: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void AvizoUniformCoordinateWriter::execute()
{
int err = 0;
setErrorCondition(err);
dataCheck();
if(getErrorCondition() < 0) {
return;
}
// Make sure any directory path is also available as the user may have just typed
// in a path without actually creating the full path
QFileInfo fi(m_OutputFile);
QString parentPath = fi.path();
QDir dir;
if(!dir.mkpath(parentPath))
{
QString ss = QObject::tr("Error creating parent path '%1'").arg(parentPath);
setErrorCondition(-1);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return;
}
QFile writer(getOutputFile());
if (!writer.open(QIODevice::WriteOnly | QIODevice::Text))
{
QString ss = QObject::tr("Avizo Output file could not be opened: %1").arg(getOutputFile());
setErrorCondition(-100);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return;
}
QDataStream out(&writer);
generateHeader(out);
err = writeData(out);
/* Let the GUI know we are done with this filter */
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:ricortiz,项目名称:DREAM3D,代码行数:42,代码来源:AvizoUniformCoordinateWriter.cpp
示例6: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void FindEllipsoidError::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(m_FeatureIdsArrayPath.getDataContainerName());
float xRes = m->getGeometryAs<ImageGeom>()->getXRes();
float yRes = m->getGeometryAs<ImageGeom>()->getYRes();
float zRes = m->getGeometryAs<ImageGeom>()->getZRes();
scaleFactor = 1.0 / xRes;
if(yRes > xRes && yRes > zRes) { scaleFactor = 1.0 / yRes; }
if(zRes > xRes && zRes > yRes) { scaleFactor = 1.0 / zRes; }
if(m->getGeometryAs<ImageGeom>()->getXPoints() > 1 && m->getGeometryAs<ImageGeom>()->getYPoints() > 1 && m->getGeometryAs<ImageGeom>()->getZPoints() > 1) { }
if(m->getGeometryAs<ImageGeom>()->getXPoints() == 1 || m->getGeometryAs<ImageGeom>()->getYPoints() == 1 || m->getGeometryAs<ImageGeom>()->getZPoints() == 1) {find_error2D();}
notifyStatusMessage(getHumanLabel(), "FindEllipsoidError Completed");
}
开发者ID:kglowins,项目名称:DREAM3D,代码行数:26,代码来源:FindEllipsoidError.cpp
示例7: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ExtractFlaggedFeatures::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
size_t totalFeatures = m_FlaggedFeaturesPtr.lock()->getNumberOfTuples();
find_feature_bounds();
QString newDCName = "";
CropImageGeometry::Pointer cropVol = CropImageGeometry::New();
for(size_t i = 1; i < totalFeatures; i++)
{
if(m_FlaggedFeatures[i] == true)
{
newDCName.clear();
newDCName = "Feature_" + QString::number(i);
cropVol->setDataContainerArray(getDataContainerArray());
cropVol->setNewDataContainerName(newDCName);
cropVol->setCellAttributeMatrixPath(m_FeatureIdsArrayPath);
cropVol->setXMin(m_FeatureBounds[6 * i]);
cropVol->setXMax(m_FeatureBounds[6 * i + 1]);
cropVol->setYMin(m_FeatureBounds[6 * i + 2]);
cropVol->setYMax(m_FeatureBounds[6 * i + 3]);
cropVol->setZMin(m_FeatureBounds[6 * i + 4]);
cropVol->setZMax(m_FeatureBounds[6 * i + 5]);
cropVol->setRenumberFeatures(false);
cropVol->setSaveAsNewDataContainer(true);
cropVol->setUpdateOrigin(true);
cropVol->execute();
}
}
// If there is an error set this to something negative and also set a message
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:ricortiz,项目名称:DREAM3D,代码行数:40,代码来源:ExtractFlaggedFeatures.cpp
示例8: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ClearDataMask::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(m_MaskArrayPath.getDataContainerName());
size_t totalPoints = m_MaskPtr.lock()->getNumberOfTuples();
// get list of array names
QString attrMatName = m_MaskArrayPath.getAttributeMatrixName();
QList<QString> voxelArrayNames = m->getAttributeMatrix(attrMatName)->getAttributeArrayNames();
// convert to list of pointers
std::vector<IDataArray::Pointer> arrayList;
for (QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
{
IDataArray::Pointer p = m->getAttributeMatrix(attrMatName)->getAttributeArray(*iter);
arrayList.push_back(p);
}
int32_t numArrays = arrayList.size();
for (size_t i = 0; i < totalPoints; i++)
{
if (!m_Mask[i])
{
for (int32_t j = 0; j < numArrays; j++)
{
arrayList[j]->initializeTuple(i, 0);
}
}
}
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:dream3d,项目名称:UCSBUtilities,代码行数:39,代码来源:ClearDataMask.cpp
示例9: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
int32_t SPParksWriter::writeHeader()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return getErrorCondition(); }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(m_FeatureIdsArrayPath.getDataContainerName());
size_t udims[3] = { 0, 0, 0 };
m->getGeometryAs<ImageGeom>()->getDimensions(udims);
size_t totalpoints = m->getGeometryAs<ImageGeom>()->getNumberOfElements();
std::ofstream outfile;
outfile.open(getOutputFile().toLatin1().data(), std::ios_base::binary);
if (!outfile)
{
QString ss = QObject::tr("Error opening output file '%1'").arg(getOutputFile());
setErrorCondition(-100);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return getErrorCondition();
}
outfile << "-" << "\n";
outfile << "3 dimension" << "\n";
outfile << totalpoints << " sites" << "\n";
outfile << "26 max neighbors" << "\n";
outfile << "0 " << udims[0] << " xlo xhi" << "\n";
outfile << "0 " << udims[1] << " ylo yhi" << "\n";
outfile << "0 " << udims[2] << " zlo zhi" << "\n";
outfile << "\n";
outfile << "Values" << "\n";
outfile << "\n";
outfile.close();
return 0;
}
开发者ID:ravishivaraman,项目名称:DREAM3D,代码行数:39,代码来源:SPParksWriter.cpp
示例10: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void GenerateGeometryConnectivity::execute()
{
int32_t err = 0;
setErrorCondition(err);
dataCheck();
if(getErrorCondition() < 0) { return; }
DataContainer::Pointer sm = getDataContainerArray()->getDataContainer(getSurfaceDataContainerName());
IGeometry::Pointer geom = sm->getGeometry();
if (m_GenerateVertexTriangleLists == true || m_GenerateTriangleNeighbors == true)
{
notifyStatusMessage(getHumanLabel(), "Generating Vertex Element List");
err = geom->findElementsContainingVert();
if (err < 0)
{
setErrorCondition(-400);
QString ss = QObject::tr("Error generating vertex element list for Geometry type %1").arg(geom->getGeometryTypeAsString());
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
}
}
if (m_GenerateTriangleNeighbors == true)
{
notifyStatusMessage(getHumanLabel(), "Generating Element Neighbors List");
err = geom->findElementNeighbors();
if (err < 0)
{
setErrorCondition(-401);
QString ss = QObject::tr("Error generating element neighbor list for Geometry type %1").arg(geom->getGeometryTypeAsString());
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
}
}
/* Let the GUI know we are done with this filter */
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:BlueQuartzSoftware,项目名称:DREAM3D,代码行数:39,代码来源:GenerateGeometryConnectivity.cpp
示例11: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
int32_t EnsembleInfoReader::readFile()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return getErrorCondition(); }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(getDataContainerName());
AttributeMatrix::Pointer cellensembleAttrMat = m->getAttributeMatrix(getCellEnsembleAttributeMatrixName());
int32_t numphases = 0;
QSettings settings(getInputFile(), QSettings::IniFormat); // The .ini or .txt input file
settings.beginGroup("EnsembleInfo");
numphases = settings.value("Number_Phases").toInt(); // read number of phases from input file
settings.endGroup();
if (0 == numphases) // Either the group name "EnsembleInfo" is incorrect or 0 was entered as the Number_Phases
{
QString ss = QObject::tr("Check the group name EnsembleInfo and that Number_Phases > 0");
setErrorCondition(-10003);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
// Figure out if we are reading contiguous groups
std::vector<bool> visited(numphases + 1, false);
visited[0] = true; //this is DREAM3D's internal, which is always visited.
QVector<size_t> tDims(1, numphases + 1);
cellensembleAttrMat->resizeAttributeArrays(tDims);
updateEnsembleInstancePointers();
for (int32_t index = 1; index < numphases + 1; index++)
{
QString group = QString::number(index);
settings.beginGroup(group);
QString xtalString = settings.value(DREAM3D::StringConstants::CrystalStructure, "MissingCrystalStructure").toString();
QString phaseTypeString = settings.value(DREAM3D::StringConstants::PhaseType, "MissingPhaseType").toString();
// Check to make sure the user has something for each of the Crystal Structure and Phase Type
if (xtalString.compare("MissingCrystalStructure") == 0)
{
QString ss = QObject::tr("Missing crystal structure for phase '%1'").arg(group);
setErrorCondition(-10008);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
if (phaseTypeString.compare("MissingPhaseType") == 0)
{
QString ss = QObject::tr("Missing phase type for phase '%1'").arg(group);
setErrorCondition(-10009);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
// Past that sanity check, so we have values, lets parse them
QStringList values;
values << xtalString << phaseTypeString;
ensembleLookup(values); // Lookup number for the crystal number string and the phase type string read from the file
// Check to see if the Crystal Structure string was valid
if (m_crystruct == Ebsd::CrystalStructure::UnknownCrystalStructure) // The crystal structure name read from the file was not found in the lookup table
{
QString ss = QObject::tr("Incorrect crystal structure name '%1'").arg(xtalString);
setErrorCondition(-10006);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
else
{
m_CrystalStructures[index] = m_crystruct;
}
// now check to see if the Phase type string was valid.
if (m_ptype == DREAM3D::PhaseType::UnknownPhaseType)
{
QString ss = QObject::tr("Incorrect phase type name '%1'").arg(phaseTypeString); // The phase type name read from the file was not found in the lookup table
setErrorCondition(-10007);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
else
{
m_PhaseTypes[index] = m_ptype;
}
visited[index] = true;
// Close up this group
settings.endGroup();
}
//Make sure we visited all the groups.
for(std::vector<bool>::size_type i = 0; i < visited.size(); i++)
{
if(visited[i] == false)
{
//.........这里部分代码省略.........
开发者ID:ricortiz,项目名称:DREAM3D,代码行数:101,代码来源:EnsembleInfoReader.cpp
示例12: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void InsertAtoms::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
// Validate that the selected AvgQuats array has tuples equal to the largest
// Feature Id; the filter would not crash otherwise, but the user should
// be notified of unanticipated behavior ; this cannot be done in the dataCheck since
// we don't have acces to the data yet
int32_t numFeaturesIn = static_cast<int32_t>(m_AvgQuatsPtr.lock()->getNumberOfTuples());
bool mismatchedFeatures = true;
int32_t largestFeature = 0;
size_t numTuples = m_SurfaceMeshFaceLabelsPtr.lock()->getNumberOfTuples();
for (size_t i = 0; i < numTuples; i++)
{
if (m_SurfaceMeshFaceLabels[2 * i] > largestFeature)
{
largestFeature = m_SurfaceMeshFaceLabels[2 * i];
if (largestFeature >= numFeaturesIn)
{
mismatchedFeatures = true;
break;
}
}
else if (m_SurfaceMeshFaceLabels[2 * i + 1] > largestFeature)
{
largestFeature = m_SurfaceMeshFaceLabels[2 * i + 1];
if (largestFeature >= numFeaturesIn)
{
mismatchedFeatures = true;
break;
}
}
}
if (mismatchedFeatures == true)
{
QString ss = QObject::tr("The number of Features in the AvgQuats array (%1) is larger than the largest Feature Id in the SurfaceMeshFaceLabels array").arg(numFeaturesIn);
setErrorCondition(-5555);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return;
}
if (largestFeature != (numFeaturesIn - 1))
{
QString ss = QObject::tr("The number of Features in the AvgQuats array (%1) does not match the largest Feature Id in the SurfaceMeshFaceLabels array").arg(numFeaturesIn);
setErrorCondition(-5555);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return;
}
FloatVec3_t latticeConstants;
latticeConstants.x = m_LatticeConstants.x / 10000.0;
latticeConstants.y = m_LatticeConstants.y / 10000.0;
latticeConstants.z = m_LatticeConstants.z / 10000.0;
DataContainer::Pointer sm = getDataContainerArray()->getDataContainer(getSurfaceMeshFaceLabelsArrayPath().getDataContainerName());
SIMPL_RANDOMNG_NEW()
#ifdef SIMPLib_USE_PARALLEL_ALGORITHMS
tbb::task_scheduler_init init;
bool doParallel = true;
#endif
// pull down faces
TriangleGeom::Pointer triangleGeom = sm->getGeometryAs<TriangleGeom>();
int64_t numFaces = m_SurfaceMeshFaceLabelsPtr.lock()->getNumberOfTuples();
// create array to hold bounding vertices for each face
FloatArrayType::Pointer llPtr = FloatArrayType::CreateArray(3, "Lower_Left_Internal_Use_Only");
FloatArrayType::Pointer urPtr = FloatArrayType::CreateArray(3, "Upper_Right_Internal_Use_Only");
float* ll = llPtr->getPointer(0);
float* ur = urPtr->getPointer(0);
VertexGeom::Pointer faceBBs = VertexGeom::CreateGeometry(2 * numFaces, "faceBBs");
// walk through faces to see how many features there are
int32_t g1 = 0, g2 = 0;
int32_t maxFeatureId = 0;
for (int64_t i = 0; i < numFaces; i++)
{
g1 = m_SurfaceMeshFaceLabels[2 * i];
g2 = m_SurfaceMeshFaceLabels[2 * i + 1];
if (g1 > maxFeatureId) { maxFeatureId = g1; }
if (g2 > maxFeatureId) { maxFeatureId = g2; }
}
// add one to account for feature 0
int32_t numFeatures = maxFeatureId + 1;
// create a dynamic list array to hold face lists
Int32Int32DynamicListArray::Pointer faceLists = Int32Int32DynamicListArray::New();
QVector<int32_t> linkCount(numFeatures, 0);
// fill out lists with number of references to cells
typedef boost::shared_array<int32_t> SharedInt32Array_t;
SharedInt32Array_t linkLocPtr(new int32_t[numFaces]);
//.........这里部分代码省略.........
开发者ID:kglowins,项目名称:DREAM3D,代码行数:101,代码来源:InsertAtoms.cpp
示例13: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ChangeResolution::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
DataContainer::Pointer m;
if(m_SaveAsNewDataContainer == false)
{
m = getDataContainerArray()->getDataContainer(getCellAttributeMatrixPath().getDataContainerName());
}
else
{
m = getDataContainerArray()->getDataContainer(getNewDataContainerName());
}
if(m->getGeometryAs<ImageGeom>()->getXRes() == m_Resolution.x
&& m->getGeometryAs<ImageGeom>()->getYRes() == m_Resolution.y
&& m->getGeometryAs<ImageGeom>()->getZRes() == m_Resolution.z)
{
return;
}
AttributeMatrix::Pointer cellAttrMat = m->getAttributeMatrix(getCellAttributeMatrixPath().getAttributeMatrixName());
size_t dims[3] = { 0, 0, 0 };
m->getGeometryAs<ImageGeom>()->getDimensions(dims);
float sizex = (dims[0]) * m->getGeometryAs<ImageGeom>()->getXRes();
float sizey = (dims[1]) * m->getGeometryAs<ImageGeom>()->getYRes();
float sizez = (dims[2]) * m->getGeometryAs<ImageGeom>()->getZRes();
size_t m_XP = size_t(sizex / m_Resolution.x);
size_t m_YP = size_t(sizey / m_Resolution.y);
size_t m_ZP = size_t(sizez / m_Resolution.z);
if (m_XP == 0) { m_XP = 1; }
if (m_YP == 0) { m_YP = 1; }
if (m_ZP == 0) { m_ZP = 1; }
size_t totalPoints = m_XP * m_YP * m_ZP;
float x = 0.0f, y = 0.0f, z = 0.0f;
size_t col = 0, row = 0, plane = 0;
size_t index;
size_t index_old;
std::vector<size_t> newindicies(totalPoints);
for (size_t i = 0; i < m_ZP; i++)
{
QString ss = QObject::tr("Changing Resolution - %1 Percent Complete").arg(((float)i / m->getGeometryAs<ImageGeom>()->getZPoints()) * 100);
notifyStatusMessage(getMessagePrefix(), getHumanLabel(), ss);
for (size_t j = 0; j < m_YP; j++)
{
for (size_t k = 0; k < m_XP; k++)
{
x = (k * m_Resolution.x);
y = (j * m_Resolution.y);
z = (i * m_Resolution.z);
col = size_t(x / m->getGeometryAs<ImageGeom>()->getXRes());
row = size_t(y / m->getGeometryAs<ImageGeom>()->getYRes());
plane = size_t(z / m->getGeometryAs<ImageGeom>()->getZRes());
index_old = (plane * m->getGeometryAs<ImageGeom>()->getXPoints() * m->getGeometryAs<ImageGeom>()->getYPoints()) + (row * m->getGeometryAs<ImageGeom>()->getXPoints()) + col;
index = (i * m_XP * m_YP) + (j * m_XP) + k;
newindicies[index] = index_old;
}
}
}
QVector<size_t> tDims(3, 0);
tDims[0] = m_XP;
tDims[1] = m_YP;
tDims[2] = m_ZP;
AttributeMatrix::Pointer newCellAttrMat = AttributeMatrix::New(tDims, cellAttrMat->getName(), cellAttrMat->getType());
QList<QString> voxelArrayNames = cellAttrMat->getAttributeArrayNames();
for (QList<QString>::iterator iter = voxelArrayNames.begin(); iter != voxelArrayNames.end(); ++iter)
{
IDataArray::Pointer p = cellAttrMat->getAttributeArray(*iter);
// Make a copy of the 'p' array that has the same name. When placed into
// the data container this will over write the current array with
// the same name. At least in theory.
IDataArray::Pointer data = p->createNewArray(p->getNumberOfTuples(), p->getComponentDimensions(), p->getName());
data->resize(totalPoints);
void* source = NULL;
void* destination = NULL;
size_t newIndicies_I = 0;
int nComp = data->getNumberOfComponents();
for (size_t i = 0; i < static_cast<size_t>(totalPoints); i++)
{
newIndicies_I = newindicies[i];
source = p->getVoidPointer((nComp * newIndicies_I));
destination = data->getVoidPointer((data->getNumberOfComponents() * i));
::memcpy(destination, source, p->getTypeSize() * data->getNumberOfComponents());
}
cellAttrMat->removeAttributeArray(*iter);
newCellAttrMat->addAttributeArray(*iter, data);
}
m->getGeometryAs<ImageGeom>()->setResolution(m_Resolution.x, m_Resolution.y, m_Resolution.z);
m->getGeometryAs<ImageGeom>()->setDimensions(m_XP, m_YP, m_ZP);
//.........这里部分代码省略.........
开发者ID:ravishivaraman,项目名称:DREAM3D,代码行数:101,代码来源:ChangeResolution.cpp
示例14: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void FindAvgCAxes::execute()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return; }
size_t totalPoints = m_FeatureIdsPtr.lock()->getNumberOfTuples();
size_t totalFeatures = m_AvgCAxesPtr.lock()->getNumberOfTuples();
QuatF q1 = QuaternionMathF::New();
QuatF* quats = reinterpret_cast<QuatF*>(m_Quats);
float g1[3][3] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } };
float g1t[3][3] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } };
float caxis[3] = { 0.0f, 0.0f, 1.0f };
float c1[3] = { 0.0f, 0.0f, 0.0f };
std::vector<int32_t> counter(totalFeatures, 0);
float curCAxis[3] = { 0.0f, 0.0f, 0.0f };
size_t index = 0;
float w = 0.0f;
for (size_t i = 0; i < totalPoints; i++)
{
if (m_FeatureIds[i] > 0)
{
index = 3 * m_FeatureIds[i];
QuaternionMathF::Copy(quats[i], q1);
FOrientArrayType om(9);
FOrientTransformsType::qu2om(FOrientArrayType(q1), om);
om.toGMatrix(g1);
// transpose the g matricies so when caxis is multiplied by it
// it will give the sample direction that the caxis is along
MatrixMath::Transpose3x3(g1, g1t);
MatrixMath::Multiply3x3with3x1(g1t, caxis, c1);
// normalize so that the magnitude is 1
MatrixMath::Normalize3x1(c1);
curCAxis[0] = m_AvgCAxes[index] / counter[m_FeatureIds[i]];
curCAxis[1] = m_AvgCAxes[index + 1] / counter[m_FeatureIds[i]];
curCAxis[2] = m_AvgCAxes[index + 2] / counter[m_FeatureIds[i]];
MatrixMath::Normalize3x1(curCAxis);
w = GeometryMath::CosThetaBetweenVectors(c1, curCAxis);
if (w < 0) { MatrixMath::Multiply3x1withConstant(c1, -1); }
counter[m_FeatureIds[i]]++;
m_AvgCAxes[index] += c1[0];
m_AvgCAxes[index + 1] += c1[1];
m_AvgCAxes[index + 2] += c1[2];
}
}
for (size_t i = 1; i < totalFeatures; i++)
{
if (counter[i] == 0)
{
m_AvgCAxes[3 * i] = 0;
m_AvgCAxes[3 * i + 1] = 0;
m_AvgCAxes[3 * i + 2] = 1;
}
else
{
m_AvgCAxes[3 * i] /= counter[i];
m_AvgCAxes[3 * i + 1] /= counter[i];
m_AvgCAxes[3 * i + 2] /= counter[i];
}
}
notifyStatusMessage(getHumanLabel(), "Complete");
}
开发者ID:kglowins,项目名称:DREAM3D,代码行数:71,代码来源:FindAvgCAxes.cpp
示例15: dataCheck
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void GenerateNodeTriangleConnectivity::preflight()
{
/* Place code here that sanity checks input arrays and input values. Look at some
* of the other DREAM3DLib/Filters/.cpp files for sample codes */
dataCheck(true, 1, 1, 1);
}
开发者ID:mahendra-ramajayam,项目名称:DREAM3D,代码行数:9,代码来源:GenerateNodeTriangleConnectivity.cpp
示例16: dataCheck
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void DxReader::preflight()
{
dataCheck(true, 1, 1, 1);
}
开发者ID:mahendra-ramajayam,项目名称:DREAM3D,代码行数:7,代码来源:DxReader.cpp
示例17: dataCheck
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ImageCalculator::execute()
{
//int err = 0;
dataCheck();
if(getErrorCondition() < 0) { return; }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(getSelectedCellArrayPath1().getDataContainerName());
QString attrMatName = getSelectedCellArrayPath1().getAttributeMatrixName();
//wrap m_RawImageData as itk::image
ImageProcessing::DefaultImageType::Pointer inputImage1 = ITKUtilitiesType::CreateItkWrapperForDataPointer(m, attrMatName, m_SelectedCellArray1);
ImageProcessing::DefaultImageType::Pointer inputImage2 = ITKUtilitiesType::CreateItkWrapperForDataPointer(m, attrMatName, m_SelectedCellArray2);
//define filters
typedef itk::AddImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::FloatImageType> AddType;//
typedef itk::SubtractImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::FloatImageType> SubtractType;//
typedef itk::MultiplyImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::FloatImageType> MultiplyType;//
typedef itk::DivideImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::FloatImageType> DivideType;//
typedef itk::AndImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType> AndType;
typedef itk::OrImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType> OrType;
typedef itk::XorImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType> XorType;
typedef itk::MinimumImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType> MinType;
typedef itk::MaximumImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType> MaxType;
typedef itk::BinaryFunctorImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::FloatImageType, ImageProcessing::Functor::Mean<ImageProcessing::DefaultPixelType> > MeanType;
typedef itk::AbsoluteValueDifferenceImageFilter<ImageProcessing::DefaultImageType, ImageProcessing::DefaultImageType, ImageProcessing::FloatImageType> DifferenceType;
//set up filters to cap image ranges
typedef itk::UnaryFunctorImageFilter< ImageProcessing::FloatImageType, ImageProcessing::DefaultImageType, ImageProcessing::Functor::LimitsRound<ImageProcessing::FloatPixelType, ImageProcessing::DefaultPixelType> > LimitsRoundType;
LimitsRoundType::Pointer limitsRound = LimitsRoundType::New();
//set up and run selected filter
switch(m_Operator)
{
case 0://add
{
AddType::Pointer add = AddType::New();
add->SetInput1(inputImage1);
add->SetInput2(inputImage2);
limitsRound->SetInput(add->GetOutput());
ITKUtilitiesType::SetITKFilterOutput(limitsRound->GetOutput(), m_NewCellArrayPtr.lock());
limitsRound->Update();
}
break;
case 1://subtract
{
SubtractType::Pointer subtract = SubtractType::New();
subtract->SetInput1(inputImage1);
subtract->SetInput2(inputImage2);
limitsRound->SetInput(subtract->GetOutput());
ITKUtilitiesType::SetITKFilterOutput(limitsRound->GetOutput(), m_NewCellArrayPtr.lock());
limitsRound->Update();
}
break;
case 2://multiply
{
MultiplyType::Pointer multiply = MultiplyType::New();
multiply->SetInput1(inputImage1);
multiply->SetInput2(inputImage2);
limitsRound->SetInput(multiply->GetOutput());
ITKUtilitiesType::SetITKFilterOutput(limitsRound->GetOutput(), m_NewCellArrayPtr.lock());
limitsRound->Update();
}
break;
case 3://divide
{
DivideType::Pointer divide = DivideType::New();
divide->SetInput1(inputImage1);
divide->SetInput2(inputImage2);
limitsRound->SetInput(divide->GetOutput());
ITKUtilitiesType::SetITKFilterOutput(limitsRound->GetOutput(), m_NewCellArrayPtr.lock());
limitsRound->Update();
}
break;
case 4://and
{
AndType::Pointer andfilter = AndType::New();
andfilter->SetInput1(inputImage1);
andfilter->SetInput2(inputImage2);
ITKUtilitiesType::SetITKFilterOutput(andfilter->GetOutput(), m_NewCellArrayPtr.lock());
andfilter->Update();
}
break;
case 5://or
{
OrType::Pointer orfilter = OrType::New();
orfilter->SetInput1(inputImage1);
orfilter->SetInput2(inputImage2);
ITKUtilitiesType::SetITKFilterOutput(orfilter->GetOutput(), m_NewCellArrayPtr.lock());
orfilter->Update();
}
break;
//.........这里部分代码省略.........
开发者ID:chongbingbao,项目名称:ImageProcessing,代码行数:101,代码来源:ImageCalculator.cpp
示例18: setErrorCondition
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
int32_t INLWriter::writeFile()
{
setErrorCondition(0);
dataCheck();
if(getErrorCondition() < 0) { return getErrorCondition(); }
DataContainer::Pointer m = getDataContainerArray()->getDataContainer(getFeatureIdsArrayPath().getDataContainerName());
size_t totalPoints = m_FeatureIdsPtr.lock()->getNumberOfTuples();
int32_t err = 0;
size_t dims[3] = { 0, 0, 0 };
m->getGeometryAs<ImageGeom>()->getDimensions(dims);
float res[3] = { 0.0f, 0.0f, 0.0f };
m->getGeometryAs<ImageGeom>()->getResolution(res);
float origin[3] = { 0.0f, 0.0f, 0.0f };
m->getGeometryAs<ImageGeom>()->getOrigin(origin);
// Make sure any directory path is also available as the user may have just typed
// in a path without actually creating the full path
QFileInfo fi(getOutputFile());
QDir dir(fi.path());
if (!dir.mkpath("."))
{
QString ss = QObject::tr("Error creating parent path '%1'").arg(fi.path());
setErrorCondition(-1);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
FILE* f = fopen(getOutputFile().toLatin1().data(), "wb");
if (NULL == f)
{
QString ss = QObject::tr("Error opening output file '%1'").arg(getOutputFile());
setErrorCondition(-1);
notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
return -1;
}
// Write the header, Each line starts with a "#" symbol
fprintf(f, "# File written from %s\r\n", SIMPLib::Version::PackageComplete().toLatin1().data());
fprintf(f, "# DateTime: %s\r\n", QDateTime::currentDateTime().toString().toLatin1().data());
fprintf(f, "# X_STEP: %f\r\n", res[0]);
fprintf(f, "# Y_STEP: %f\r\n", res[1]);
fprintf(f, "# Z_STEP: %f\r\n", res[2]);
fprintf(f, "#\r\n");
fprintf(f, "# X_MIN: %f\r\n", origin[0]);
fprintf(f, "# Y_MIN: %f\r\n", origin[1]);
fprintf(f, "# Z_MIN: %f\r\n", origin[2]);
fprintf(f, "#\r\n");
fprintf(f, "# X_MAX: %f\r\n", origin[0] + (dims[0]*res[0]));
fprintf(f, "# Y_MAX: %f\r\n", origin[1] + (dims[1]*res[1]));
fprintf(f, "# Z_MAX: %f\r\n", origin[2] + (dims[2]*res[2]));
fprintf(f, "#\r\n");
fprintf(f, "# X_DIM: %llu\r\n", static_cast<long long unsigned int>(dims[0]));
fprintf(f, "# Y_DIM: %llu\r\n", static_cast<long long unsigned int>(dims[1]));
fprintf(f, "# Z_DIM: %llu\r\n", static_cast<long long unsigned int>(dims[2]));
fprintf(f, "#\r\n");
StringDataArray* materialNames = m_MaterialNamePtr.lock().get();
#if 0
-------------------------------------------- -
# Phase_1: MOX with 30% Pu
# Symmetry_1: 43
# Features_1: 4
#
# Phase_2: Brahman
# Symmetry_2: 62
# Features_2: 6
#
# Phase_3: Void
# Symmetry_3: 22
# Features_3: 1
#
# Total_Features: 11
-------------------------------------------- -
#endif
uint32_t symmetry = 0;
int32_t count = static_cast<int32_t>(materialNames->getNumberOfTuples());
for (int32_t i = 1; i < count; ++i)
{
QString matName = materialNames->getValue(i);
fprintf(f, "# Phase_%d: %s\r\n", i, matName.toLatin1().data());
symmetry = m_CrystalStructures[i];
symmetry = mapCrystalSymmetryToTslSymmetry(symmetry);
fprintf(f, "# Symmetry_%d: %u\r\n", i, symmetry);
fprintf(f, "# Features_%d: %d\r\n", i, m_NumFeatures[i]);
fprintf(f, "#\r\n");
}
std::set<int32_t> uniqueFeatureIds;
for (size_t i = 0; i < totalPoints; ++i)
{
uniqueFeatureIds.insert(m_FeatureIds[i]);
//.........这里部分代码省略.........
开发者ID:BlueQuartzSoftware,项目名称:DREAM3D,代码行数:101 |
请发表评论