Skip to content

itk::ParticleDomain

Inherits from DataObject

Inherited by itk::ContourDomain, itk::MeshDomain, itk::ParticleRegionDomain

Public Types

Name
typedef SmartPointer< ParticleDomain > Pointer
typedef Point< double, DIMENSION > PointType
typedef vnl_matrix_fixed< float, DIMENSION, DIMENSION > GradNType

Public Functions

Name
virtual bool ApplyConstraints(PointType & p, int idx, bool dbg =false) const =0
virtual PointType UpdateParticlePosition(const PointType & point, int idx, vnl_vector_fixed< double, DIMENSION > & update) const =0
virtual void InvalidateParticlePosition(int idx) const
virtual vnl_vector_fixed< double, DIMENSION > ProjectVectorToSurfaceTangent(vnl_vector_fixed< double, DIMENSION > & gradE, const PointType & pos, int idx) const =0
virtual vnl_vector_fixed< float, DIMENSION > SampleGradientAtPoint(const PointType & point, int idx) const =0
virtual vnl_vector_fixed< float, DIMENSION > SampleNormalAtPoint(const PointType & point, int idx) const =0
virtual GradNType SampleGradNAtPoint(const PointType & p, int idx) const =0
virtual double Distance(const PointType & a, int idx_a, const PointType & b, int idx_b, vnl_vector_fixed< double, DIMENSION > * out_grad =nullptr) const
virtual double SquaredDistance(const PointType & a, int idx_a, const PointType & b, int idx_b) const
virtual bool IsWithinDistance(const PointType & a, int idx_a, const PointType & b, int idx_b, double test_dist, double & distance) const
virtual double GetCurvature(const PointType & p, int idx) const =0
virtual double GetSurfaceMeanCurvature() const =0
virtual double GetSurfaceStdDevCurvature() const =0
virtual const PointType & GetLowerBound() const =0
virtual const PointType & GetUpperBound() const =0
virtual PointType GetZeroCrossingPoint() const =0
virtual double GetSurfaceArea() const =0
virtual PointType GetValidLocationNear(PointType p) const =0
virtual double GetMaxDiameter() const =0
virtual void DeleteImages() =0
virtual void DeletePartialDerivativeImages() =0
virtual void UpdateZeroCrossingPoint() =0
bool IsDomainFixed() const
virtual shapeworks::DomainType GetDomainType() const =0
std::shared_ptr< Constraints > GetConstraints() const
virtual PointType GetPositionAfterSplit(const PointType & pt, const vnl_vector_fixed< double, 3 > & random, double epsilon) const
void SetDomainID(int id)
void SetDomainName(std::string name)

Protected Functions

Name
ParticleDomain()
virtual ~ParticleDomain()
void PrintSelf(std::ostream & os, Indent indent) const

Protected Attributes

Name
bool m_FixedDomain
int m_DomainID
std::string m_DomainName
std::shared_ptr< Constraints > constraints

Public Types Documentation

typedef Pointer

typedef SmartPointer<ParticleDomain> itk::ParticleDomain::Pointer;

Standard class typedefs

typedef PointType

typedef Point<double, DIMENSION> itk::ParticleDomain::PointType;

Point type used to store particle locations.

typedef GradNType

typedef vnl_matrix_fixed<float, DIMENSION, DIMENSION> itk::ParticleDomain::GradNType;

Public Functions Documentation

function ApplyConstraints

virtual bool ApplyConstraints(
    PointType & p,
    int idx,
    bool dbg =false
) const =0

Reimplemented by: itk::ContourDomain::ApplyConstraints, itk::ParticleImplicitSurfaceDomain::ApplyConstraints, itk::MeshDomain::ApplyConstraints

Apply any constraints to the given point location. This should force the point to a position on the surface that satisfies all constraints.

function UpdateParticlePosition

virtual PointType UpdateParticlePosition(
    const PointType & point,
    int idx,
    vnl_vector_fixed< double, DIMENSION > & update
) const =0

Reimplemented by: itk::ContourDomain::UpdateParticlePosition, itk::ParticleImplicitSurfaceDomain::UpdateParticlePosition, itk::MeshDomain::UpdateParticlePosition

Applies the update to the point and returns the new point position.

function InvalidateParticlePosition

inline virtual void InvalidateParticlePosition(
    int idx
) const

Reimplemented by: itk::ContourDomain::InvalidateParticlePosition, itk::MeshDomain::InvalidateParticlePosition

function ProjectVectorToSurfaceTangent

virtual vnl_vector_fixed< double, DIMENSION > ProjectVectorToSurfaceTangent(
    vnl_vector_fixed< double, DIMENSION > & gradE,
    const PointType & pos,
    int idx
) const =0

Reimplemented by: itk::ContourDomain::ProjectVectorToSurfaceTangent, itk::ParticleImageDomainWithGradients::ProjectVectorToSurfaceTangent, itk::MeshDomain::ProjectVectorToSurfaceTangent

Projects the vector to the surface tangent at the point.

function SampleGradientAtPoint

virtual vnl_vector_fixed< float, DIMENSION > SampleGradientAtPoint(
    const PointType & point,
    int idx
) const =0

Reimplemented by: itk::ParticleImageDomainWithGradients::SampleGradientAtPoint, itk::ContourDomain::SampleGradientAtPoint, itk::MeshDomain::SampleGradientAtPoint

function SampleNormalAtPoint

virtual vnl_vector_fixed< float, DIMENSION > SampleNormalAtPoint(
    const PointType & point,
    int idx
) const =0

Reimplemented by: itk::ParticleImageDomainWithGradients::SampleNormalAtPoint, itk::ContourDomain::SampleNormalAtPoint, itk::MeshDomain::SampleNormalAtPoint

function SampleGradNAtPoint

virtual GradNType SampleGradNAtPoint(
    const PointType & p,
    int idx
) const =0

Reimplemented by: itk::ContourDomain::SampleGradNAtPoint, itk::ParticleImageDomainWithGradN::SampleGradNAtPoint, itk::MeshDomain::SampleGradNAtPoint

function Distance

inline virtual double Distance(
    const PointType & a,
    int idx_a,
    const PointType & b,
    int idx_b,
    vnl_vector_fixed< double, DIMENSION > * out_grad =nullptr
) const

Reimplemented by: itk::MeshDomain::Distance

Distance between locations is used for computing energy and neighborhoods. Optionally return the gradient of the distance

function SquaredDistance

inline virtual double SquaredDistance(
    const PointType & a,
    int idx_a,
    const PointType & b,
    int idx_b
) const

Reimplemented by: itk::ContourDomain::SquaredDistance, itk::MeshDomain::SquaredDistance

Squared Distance between locations is used for computing sigma.

function IsWithinDistance

inline virtual bool IsWithinDistance(
    const PointType & a,
    int idx_a,
    const PointType & b,
    int idx_b,
    double test_dist,
    double & distance
) const

Reimplemented by: itk::MeshDomain::IsWithinDistance

Returns whether or not the two points are separated by the given distance

function GetCurvature

virtual double GetCurvature(
    const PointType & p,
    int idx
) const =0

Reimplemented by: itk::ContourDomain::GetCurvature, itk::ParticleImageDomainWithCurvature::GetCurvature, itk::MeshDomain::GetCurvature

Used in ParticleMeanCurvatureAttribute

function GetSurfaceMeanCurvature

virtual double GetSurfaceMeanCurvature() const =0

Reimplemented by: itk::ContourDomain::GetSurfaceMeanCurvature, itk::ParticleImageDomainWithCurvature::GetSurfaceMeanCurvature, itk::MeshDomain::GetSurfaceMeanCurvature

Used in ParticleMeanCurvatureAttribute

function GetSurfaceStdDevCurvature

virtual double GetSurfaceStdDevCurvature() const =0

Reimplemented by: itk::ContourDomain::GetSurfaceStdDevCurvature, itk::ParticleImageDomainWithCurvature::GetSurfaceStdDevCurvature, itk::MeshDomain::GetSurfaceStdDevCurvature

Used in ParticleMeanCurvatureAttribute

function GetLowerBound

virtual const PointType & GetLowerBound() const =0

Reimplemented by: itk::ParticleRegionDomain::GetLowerBound, itk::ContourDomain::GetLowerBound, itk::MeshDomain::GetLowerBound

Gets the minimum x, y, z values of the bounding box for the domain. This is used for setting up the PowerOfTwoPointTree.

function GetUpperBound

virtual const PointType & GetUpperBound() const =0

Reimplemented by: itk::ParticleRegionDomain::GetUpperBound, itk::ContourDomain::GetUpperBound, itk::MeshDomain::GetUpperBound

Gets the maximum x, y, z values of the bounding box for the domain. This is used for setting up the PowerOfTwoPointTree.

function GetZeroCrossingPoint

virtual PointType GetZeroCrossingPoint() const =0

Reimplemented by: itk::ContourDomain::GetZeroCrossingPoint, itk::ParticleImplicitSurfaceDomain::GetZeroCrossingPoint, itk::MeshDomain::GetZeroCrossingPoint

Get any valid point on the domain. This is used to place the first particle.

function GetSurfaceArea

virtual double GetSurfaceArea() const =0

Reimplemented by: itk::ContourDomain::GetSurfaceArea, itk::ParticleImageDomain::GetSurfaceArea, itk::MeshDomain::GetSurfaceArea

Use for neighborhood radius.

function GetValidLocationNear

virtual PointType GetValidLocationNear(
    PointType p
) const =0

Reimplemented by: itk::ContourDomain::GetValidLocationNear, itk::ParticleImageDomain::GetValidLocationNear, itk::MeshDomain::GetValidLocationNear

GetValidLocation returns a PointType location on the surface. Used for placing the first particle.

function GetMaxDiameter

virtual double GetMaxDiameter() const =0

Reimplemented by: itk::ContourDomain::GetMaxDiameter, itk::ParticleImageDomain::GetMaxDiameter, itk::MeshDomain::GetMaxDiameter

GetMaxDiameter returns the maximum diameter of the domain and is used for computing sigma

function DeleteImages

virtual void DeleteImages() =0

Reimplemented by: itk::ContourDomain::DeleteImages, itk::ParticleImageDomain::DeleteImages, itk::ParticleImageDomainWithGradients::DeleteImages, itk::ParticleImageDomainWithGradN::DeleteImages, itk::MeshDomain::DeleteImages

function DeletePartialDerivativeImages

virtual void DeletePartialDerivativeImages() =0

Reimplemented by: itk::ContourDomain::DeletePartialDerivativeImages, itk::ParticleImageDomainWithGradN::DeletePartialDerivativeImages, itk::MeshDomain::DeletePartialDerivativeImages

function UpdateZeroCrossingPoint

virtual void UpdateZeroCrossingPoint() =0

Reimplemented by: itk::ContourDomain::UpdateZeroCrossingPoint, itk::ParticleImageDomain::UpdateZeroCrossingPoint, itk::MeshDomain::UpdateZeroCrossingPoint

function IsDomainFixed

inline bool IsDomainFixed() const

function GetDomainType

virtual shapeworks::DomainType GetDomainType() const =0

Reimplemented by: itk::ContourDomain::GetDomainType, itk::ParticleImplicitSurfaceDomain::GetDomainType, itk::MeshDomain::GetDomainType

function GetConstraints

inline std::shared_ptr< Constraints > GetConstraints() const

function GetPositionAfterSplit

inline virtual PointType GetPositionAfterSplit(
    const PointType & pt,
    const vnl_vector_fixed< double, 3 > & random,
    double epsilon
) const

Reimplemented by: itk::ContourDomain::GetPositionAfterSplit

function SetDomainID

inline void SetDomainID(
    int id
)

function SetDomainName

inline void SetDomainName(
    std::string name
)

Protected Functions Documentation

function ParticleDomain

inline ParticleDomain()

function ~ParticleDomain

inline virtual ~ParticleDomain()

function PrintSelf

inline void PrintSelf(
    std::ostream & os,
    Indent indent
) const

Protected Attributes Documentation

variable m_FixedDomain

bool m_FixedDomain {true};

variable m_DomainID

int m_DomainID {-1};

variable m_DomainName

std::string m_DomainName;

variable constraints

std::shared_ptr< Constraints > constraints;

Updated on 2022-03-31 at 09:51:18 -0600