Skip to content



#include <VectorFunction.h>

Inherits from itk::LightObject

Inherited by shapeworks::CorrespondenceFunction, shapeworks::DisentangledCorrespondenceFunction, shapeworks::DualVectorFunction, shapeworks::LegacyCorrespondenceFunction, shapeworks::SamplingFunction

Public Types

typedef VectorFunction Self
typedef itk::SmartPointer< Self > Pointer
typedef itk::SmartPointer< const Self > ConstPointer
typedef itk::LightObject Superclass
typedef vnl_vector_fixed< double, VDimension > VectorType

Public Functions

itkTypeMacro(VectorFunction , LightObject )
itkStaticConstMacro(Dimension , unsigned int , VDimension )
virtual VectorType Evaluate(unsigned int , unsigned int , const ParticleSystem * , double & maxtimestep) const =0
virtual VectorType Evaluate(unsigned int , unsigned int , const ParticleSystem * , double & maxtimestep, double & energy) const =0
virtual double Energy(unsigned int , unsigned int , const ParticleSystem * ) const =0
virtual void ResetBuffers()
virtual void AfterIteration()
virtual void BeforeIteration()
virtual void BeforeEvaluate(unsigned int , unsigned int , const ParticleSystem * )
virtual void SetParticleSystem(ParticleSystem * p)
virtual ParticleSystem * GetParticleSystem() const
virtual void SetDomainNumber(unsigned int i)
virtual int GetDomainNumber() const
virtual VectorFunction::Pointer Clone()
virtual double GetRelativeEnergyScaling() const
virtual void SetRelativeEnergyScaling(double r)

Protected Functions

virtual ~VectorFunction()
void operator=(const VectorFunction & )
VectorFunction(const VectorFunction & )

Public Attributes

constexpr static unsigned int VDimension

Protected Attributes

ParticleSystem * m_ParticleSystem
unsigned int m_DomainNumber

Detailed Description

class shapeworks::VectorFunction;

This is the base class defining the API for a function that takes a particle system, domain, and location index as arguments and returns a vector-valued result.

Public Types Documentation

typedef Self

typedef VectorFunction shapeworks::VectorFunction::Self;

Standard class typedefs.

typedef Pointer

typedef itk::SmartPointer<Self> shapeworks::VectorFunction::Pointer;

typedef ConstPointer

typedef itk::SmartPointer<const Self> shapeworks::VectorFunction::ConstPointer;

typedef Superclass

typedef itk::LightObject shapeworks::VectorFunction::Superclass;

typedef VectorType

typedef vnl_vector_fixed<double, VDimension> shapeworks::VectorFunction::VectorType;

Type of vectors.

Public Functions Documentation

function itkTypeMacro

    VectorFunction ,

function itkStaticConstMacro

    Dimension ,
    unsigned int ,

Method for object allocation through the factory. Dimensionality of the domain of the particle system.

function Evaluate

virtual VectorType Evaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystem * ,
    double & maxtimestep
) const =0

Reimplemented by: shapeworks::CorrespondenceFunction::Evaluate, shapeworks::CurvatureSamplingFunction::Evaluate, shapeworks::DisentangledCorrespondenceFunction::Evaluate, shapeworks::LegacyCorrespondenceFunction::Evaluate, shapeworks::SamplingFunction::Evaluate, shapeworks::DualVectorFunction::Evaluate

The first argument is a pointer to the particle system. The second argument is the index of the domain within that particle system. The third argument is the index of the particle location within the given domain.

function Evaluate

virtual VectorType Evaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystem * ,
    double & maxtimestep,
    double & energy
) const =0

Reimplemented by: shapeworks::SamplingFunction::Evaluate, shapeworks::DualVectorFunction::Evaluate, shapeworks::CorrespondenceFunction::Evaluate, shapeworks::CurvatureSamplingFunction::Evaluate, shapeworks::DisentangledCorrespondenceFunction::Evaluate, shapeworks::LegacyCorrespondenceFunction::Evaluate

function Energy

virtual double Energy(
    unsigned int ,
    unsigned int ,
    const ParticleSystem * 
) const =0

Reimplemented by: shapeworks::CorrespondenceFunction::Energy, shapeworks::CurvatureSamplingFunction::Energy, shapeworks::DisentangledCorrespondenceFunction::Energy, shapeworks::LegacyCorrespondenceFunction::Energy, shapeworks::DualVectorFunction::Energy, shapeworks::SamplingFunction::Energy

function ResetBuffers

inline virtual void ResetBuffers()

Reimplemented by: shapeworks::SamplingFunction::ResetBuffers

May be called by the solver class.

function AfterIteration

inline virtual void AfterIteration()

Reimplemented by: shapeworks::CorrespondenceFunction::AfterIteration, shapeworks::CurvatureSamplingFunction::AfterIteration, shapeworks::DisentangledCorrespondenceFunction::AfterIteration, shapeworks::DualVectorFunction::AfterIteration, shapeworks::LegacyCorrespondenceFunction::AfterIteration

This method is called by a solver after each iteration. Subclasses may or may not implement this method.

function BeforeIteration

inline virtual void BeforeIteration()

Reimplemented by: shapeworks::CorrespondenceFunction::BeforeIteration, shapeworks::CurvatureSamplingFunction::BeforeIteration, shapeworks::DisentangledCorrespondenceFunction::BeforeIteration, shapeworks::DualVectorFunction::BeforeIteration, shapeworks::LegacyCorrespondenceFunction::BeforeIteration

This method is called by a solver before each iteration. Subclasses may or may not implement this method.

function BeforeEvaluate

inline virtual void BeforeEvaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystem * 

Reimplemented by: shapeworks::DualVectorFunction::BeforeEvaluate, shapeworks::CurvatureSamplingFunction::BeforeEvaluate

This method may be called to set up the state of the function object before a call to Evaluate. It is necessary in order to initialize certain constants and variables that may be used for calculating the Energy as well as the Gradients. Typically this is only necessary for the adaptive gradient descent algorithm.

function SetParticleSystem

inline virtual void SetParticleSystem(
    ParticleSystem * p

Reimplemented by: shapeworks::DualVectorFunction::SetParticleSystem

Some subclasses may require a pointer to the particle system and its domain number. These methods set/get those values.

function GetParticleSystem

inline virtual ParticleSystem * GetParticleSystem() const

function SetDomainNumber

inline virtual void SetDomainNumber(
    unsigned int i

Reimplemented by: shapeworks::DualVectorFunction::SetDomainNumber

function GetDomainNumber

inline virtual int GetDomainNumber() const

function Clone

inline virtual VectorFunction::Pointer Clone()

Reimplemented by: shapeworks::CorrespondenceFunction::Clone, shapeworks::CurvatureSamplingFunction::Clone, shapeworks::DisentangledCorrespondenceFunction::Clone, shapeworks::DualVectorFunction::Clone, shapeworks::LegacyCorrespondenceFunction::Clone, shapeworks::SamplingFunction::Clone

function GetRelativeEnergyScaling

inline virtual double GetRelativeEnergyScaling() const

Reimplemented by: shapeworks::DualVectorFunction::GetRelativeEnergyScaling

function SetRelativeEnergyScaling

inline virtual void SetRelativeEnergyScaling(
    double r

Reimplemented by: shapeworks::DualVectorFunction::SetRelativeEnergyScaling

Protected Functions Documentation

function VectorFunction

inline VectorFunction()

function ~VectorFunction

inline virtual ~VectorFunction()

function operator=

void operator=(
    const VectorFunction & 

function VectorFunction

    const VectorFunction & 

Public Attributes Documentation

variable VDimension

static constexpr static unsigned int VDimension = 3;

Protected Attributes Documentation

variable m_ParticleSystem

ParticleSystem * m_ParticleSystem;

variable m_DomainNumber

unsigned int m_DomainNumber;

Updated on 2024-03-17 at 12:58:44 -0600