shapeworks::ParticleImplicitSurfaceDomain
#include <ParticleImplicitSurfaceDomain.h>
Inherits from shapeworks::ParticleImageDomainWithCurvature< T >, shapeworks::ParticleImageDomainWithGradN< T >, shapeworks::ParticleImageDomainWithGradients< T >, shapeworks::ParticleImageDomain< T >, shapeworks::ParticleRegionDomain, shapeworks::ParticleDomain
Public Types
Name | |
---|---|
typedef ParticleImageDomainWithCurvature< T > | Superclass |
typedef std::shared_ptr< ParticleImplicitSurfaceDomain > | Pointer |
typedef Superclass::ImageType | ImageType |
typedef Superclass::PointType | PointType |
Public Functions
Name | |
---|---|
virtual void | SetTolerance(const T _Tolerance) |
virtual T | GetTolerance() |
virtual shapeworks::DomainType | GetDomainType() const override |
virtual bool | ApplyConstraints(PointType & p, int idx, bool dbg =false) const override |
PointType | UpdateParticlePosition(const PointType & point, int idx, vnl_vector_fixed< double, DIMENSION > & update) const override |
void | SetMesh(TriMesh * mesh) |
void | SetFeaMesh(const char * feaFile) |
void | SetFeaGrad(const char * feaGradFile) |
void | SetFids(const char * fidsFile) |
meshFIM * | GetMesh() |
meshFIM * | GetMesh() const |
virtual PointType | GetZeroCrossingPoint() const override |
ParticleImplicitSurfaceDomain() | |
void | PrintSelf(std::ostream & os, itk::Indent indent) const |
virtual | ~ParticleImplicitSurfaceDomain() |
Additional inherited members
Public Types inherited from shapeworks::ParticleImageDomainWithCurvature< T >
Name | |
---|---|
typedef Superclass::VnlMatrixType | VnlMatrixType |
Public Functions inherited from shapeworks::ParticleImageDomainWithCurvature< T >
Name | |
---|---|
void | SetImage(ImageType * I, double narrow_band) |
virtual double | GetCurvature(const PointType & p, int idx) const override |
virtual double | GetSurfaceMeanCurvature() const override |
virtual double | GetSurfaceStdDevCurvature() const override |
Protected Functions inherited from shapeworks::ParticleImageDomainWithCurvature< T >
Name | |
---|---|
ParticleImageDomainWithCurvature() | |
virtual | ~ParticleImageDomainWithCurvature() |
Public Types inherited from shapeworks::ParticleImageDomainWithGradN< T >
Name | |
---|---|
typedef Superclass::GradNType | GradNType |
typedef Superclass::GradNType | VnlMatrixType |
Public Functions inherited from shapeworks::ParticleImageDomainWithGradN< T >
Name | |
---|---|
void | SetImage(ImageType * I, double narrow_band) |
virtual GradNType | SampleGradNAtPoint(const PointType & p, int idx) const override |
virtual void | DeletePartialDerivativeImages() override |
virtual void | DeleteImages() override |
Protected Functions inherited from shapeworks::ParticleImageDomainWithGradN< T >
Name | |
---|---|
ParticleImageDomainWithGradN() | |
virtual | ~ParticleImageDomainWithGradN() |
Public Types inherited from shapeworks::ParticleImageDomainWithGradients< T >
Name | |
---|---|
typedef itk::FixedArray< T, DIMENSION > | VectorType |
typedef vnl_vector_fixed< T, DIMENSION > | VnlVectorType |
Public Functions inherited from shapeworks::ParticleImageDomainWithGradients< T >
Name | |
---|---|
void | SetImage(ImageType * I, double narrow_band) |
virtual vnl_vector_fixed< float, DIMENSION > | SampleGradientAtPoint(const PointType & p, int idx) const |
virtual vnl_vector_fixed< float, DIMENSION > | SampleNormalAtPoint(const PointType & p, int idx) const |
vnl_vector_fixed< double, DIMENSION > | ProjectVectorToSurfaceTangent(vnl_vector_fixed< double, DIMENSION > & gradE, const PointType & pos, int idx) const override |
virtual void | DeleteImages() override |
Protected Functions inherited from shapeworks::ParticleImageDomainWithGradients< T >
Name | |
---|---|
ParticleImageDomainWithGradients() | |
virtual | ~ParticleImageDomainWithGradients() |
openvdb::VectorGrid::Ptr | GetVDBGradient() |
Public Functions inherited from shapeworks::ParticleImageDomain< T >
Name | |
---|---|
void | SetImage(ImageType * I, double narrow_band) |
virtual double | GetSurfaceArea() const override |
PointType | GetOrigin() const |
ImageType::SizeType | GetSize() const |
ImageType::SpacingType | GetSpacing() const |
ImageType::RegionType::IndexType | GetIndex() const |
virtual PointType | GetValidLocationNear(PointType p) const override |
T | Sample(const PointType & p) const |
virtual double | GetMaxDiameter() const override |
virtual void | DeleteImages() override |
virtual void | UpdateZeroCrossingPoint() override |
Protected Functions inherited from shapeworks::ParticleImageDomain< T >
Name | |
---|---|
openvdb::FloatGrid::Ptr | GetVDBImage() const |
ParticleImageDomain() | |
virtual | ~ParticleImageDomain() |
openvdb::math::Transform::Ptr | transform() const |
openvdb::Vec3R | ToVDBCoord(const PointType & p) const |
Public Functions inherited from shapeworks::ParticleRegionDomain
Name | |
---|---|
virtual const PointType & | GetUpperBound() const |
virtual const PointType & | GetLowerBound() const |
void | SetUpperBound(const PointType _UpperBound) |
void | SetLowerBound(const PointType _LowerBound) |
void | SetRegion(const PointType & lowerBound, const PointType & upperBound) |
Protected Functions inherited from shapeworks::ParticleRegionDomain
Name | |
---|---|
ParticleRegionDomain() | |
virtual | ~ParticleRegionDomain() |
bool | IsInsideBuffer(const PointType & p) const |
Public Types inherited from shapeworks::ParticleDomain
Name | |
---|---|
using vnl_matrix_fixed< float, 3, 3 > | GradNType |
using vnl_vector_fixed< double, 3 > | VectorDoubleType |
using vnl_vector_fixed< float, 3 > | VectorFloatType |
Public Functions inherited from shapeworks::ParticleDomain
Name | |
---|---|
virtual void | InvalidateParticlePosition(int idx) const |
virtual VectorDoubleType | ProjectVectorToSurfaceTangent(VectorDoubleType & gradE, const PointType & pos, int idx) const =0 |
virtual VectorFloatType | SampleGradientAtPoint(const PointType & point, int idx) const =0 |
virtual VectorFloatType | 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, VectorDoubleType * 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 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 |
std::shared_ptr< shapeworks::Constraints > | GetConstraints() const |
virtual PointType | GetPositionAfterSplit(const PointType & pt, const VectorDoubleType & local_direction, const VectorDoubleType & global_direction, double epsilon) const |
void | SetDomainID(int id) |
void | SetDomainName(std::string name) |
Protected Functions inherited from shapeworks::ParticleDomain
Name | |
---|---|
ParticleDomain() | |
virtual | ~ParticleDomain() |
Protected Attributes inherited from shapeworks::ParticleDomain
Name | |
---|---|
bool | m_FixedDomain |
int | m_DomainID |
std::string | m_DomainName |
std::shared_ptr< shapeworks::Constraints > | constraints |
Detailed Description
template <class T >
class shapeworks::ParticleImplicitSurfaceDomain;
A 3D cartesian domain that constrains points so that they always lie an implicit surface. The implicit surface is defined as the zero isosurface of the given image. Constraints are applied using a Newton-Raphson iteration, and this class assumes it has a distance transform as an image.
Public Types Documentation
typedef Superclass
typedef ParticleImageDomainWithCurvature<T> shapeworks::ParticleImplicitSurfaceDomain< T >::Superclass;
Standard class typedefs
typedef Pointer
typedef std::shared_ptr<ParticleImplicitSurfaceDomain> shapeworks::ParticleImplicitSurfaceDomain< T >::Pointer;
typedef ImageType
typedef Superclass::ImageType shapeworks::ParticleImplicitSurfaceDomain< T >::ImageType;
typedef PointType
typedef Superclass::PointType shapeworks::ParticleImplicitSurfaceDomain< T >::PointType;
Public Functions Documentation
function SetTolerance
inline virtual void SetTolerance(
const T _Tolerance
)
Set/Get the precision of the projection operation. The resulting projection will be within the specified tolerance.
function GetTolerance
inline virtual T GetTolerance()
function GetDomainType
inline virtual shapeworks::DomainType GetDomainType() const override
Reimplements: shapeworks::ParticleDomain::GetDomainType
function ApplyConstraints
inline virtual bool ApplyConstraints(
PointType & p,
int idx,
bool dbg =false
) const override
Reimplements: shapeworks::ParticleDomain::ApplyConstraints
Apply any constraints to the given point location. This method constrains points to lie within the given domain and on a given implicit surface. If the point is not already on the surface, it is projected back to the surface using a Newton-Raphson iteration. IMPORTANT: This method returns the true/false value of its superclass, and does not indicate changes only due to projection. This is done for speed: we typically will only want to know if a point tried to move outside of the bounding box domain, since movement off the surface will be very common. Consider subclassing this method to add a check for significant differences in the input and output points.
function UpdateParticlePosition
inline PointType UpdateParticlePosition(
const PointType & point,
int idx,
vnl_vector_fixed< double, DIMENSION > & update
) const override
function SetMesh
inline void SetMesh(
TriMesh * mesh
)
function SetFeaMesh
inline void SetFeaMesh(
const char * feaFile
)
function SetFeaGrad
inline void SetFeaGrad(
const char * feaGradFile
)
function SetFids
inline void SetFids(
const char * fidsFile
)
function GetMesh
inline meshFIM * GetMesh()
function GetMesh
inline meshFIM * GetMesh() const
function GetZeroCrossingPoint
inline virtual PointType GetZeroCrossingPoint() const override
Reimplements: shapeworks::ParticleDomain::GetZeroCrossingPoint
Get any valid point on the domain. This is used to place the first particle.
function ParticleImplicitSurfaceDomain
inline ParticleImplicitSurfaceDomain()
function PrintSelf
inline void PrintSelf(
std::ostream & os,
itk::Indent indent
) const
function ~ParticleImplicitSurfaceDomain
inline virtual ~ParticleImplicitSurfaceDomain()
Updated on 2022-07-23 at 16:40:06 -0600