13#ifndef ML_VESSEL_NODE_H
14#define ML_VESSEL_NODE_H
32friend class LoadTreeData;
59 std::vector<VesselEdge*>*
edges() {
return &_edges; }
66 bool isPred(
size_t i)
const {
return _edges[
i]->succNode()==
this; }
68 bool isSucc(
size_t i)
const {
return _edges[
i]->predNode()==
this; }
70 bool isCycle(
size_t i)
const {
return _edges[
i]->isCycle(); }
91 ImageVector
getVectorPos()
const {
return ImageVector(
static_cast<int>(getPos()[0]),
static_cast<int>(getPos()[1]),
static_cast<int>(getPos()[2]), 0, 0, 0); }
95 double distance(
const Vector3& position)
const {
return (position - getPos()).length(); }
135 std::vector<VesselEdge*> _edges;
159 void readOldGraphNodeStateFromTree(TreeNode* parent);
161 void readOldVesselNodeStateFromTree(TreeNode* parent);
Defines the basic Graph class which holds sets of nodes, edges and roots to model tubular structures ...
VesselNode is derived from GraphNode, hence it can be stored as node item in a class Graph object.
bool isPred(size_t i) const
Is the dependent edge with index i preceding?
const VesselNode * getPredNode() const
Get the one and only predecessor node (return NULL for rootnode)
VesselEdge * getPredEdge()
Get the one and only predecessor edge (return NULL for rootnode)
void convertToWorld(Matrix4 *mat)
Convert nodes' coordinates.
const VesselEdge * getPredEdge() const
Get the one and only predecessor edge (return NULL for rootnode)
~VesselNode() override
Destructor.
void copyProperties(const VesselNode *other)
Copy all properties (topology information is left unchanged)
void readStateFromTree(TreeNode *parent) override
Reads the object state from the children of the given parent node.
STATIC_GRAPH_PROPERTY(MLdouble, minDistance, MinDistance)
VesselNode * getPredNode()
Get the one and only predecessor node (return NULL for rootnode)
STATIC_GRAPH_PROPERTY(Vector3, pos, Pos)
bool isSucc(size_t i) const
Is the dependent edge with index i succeeding?
size_t getEdgeNum() const
Get number of edges dependent on the node.
void setVectorPos(const ImageVector &position)
Position in world.
bool closeCycle()
TODO: Unclear what this does.
void transform(const Matrix4 &m)
Apply a 4x4 homogeneous transformation matrix to the node position.
bool operator==(const VesselNode &other) const
STATIC_GRAPH_PROPERTY(MLint, label, Label)
VesselEdge * getDepEdge(size_t i)
Get the pointer of edge with index i.
ImageVector getVectorPos() const
Position in world.
ML_SET_ADDSTATE_VERSION(2)
Set current addStateToTree() version number:
STATIC_GRAPH_PROPERTY(MLdouble, maxPathLength, MaxPathLength)
std::vector< VesselEdge * > * edges()
Get pointer to edge array.
bool isCycle(size_t i) const
Is the dependent edge with index i a cycle?
double distance(const Vector3 &position) const
Get the euclidean distance between _worldPos and pos.
void convertToVoxel(Matrix4 *mat)
Convert nodes' coordinates.
void addStateToTree(TreeNode *parent) const override
STATIC_GRAPH_PROPERTY(MLdouble, weight, Weight)
Weight of the node.
VesselNode * getDepNode(size_t i)
Get dependent node via edge with index i.
bool operator!=(const VesselNode &other) const
const VesselEdge * getDepEdge(size_t i) const
Get the pointer of edge with index i.
const VesselNode * getDepNode(size_t i) const
Get dependent node via edge with index i.
#define ML_ABSTRACT_CLASS_HEADER(className)
Same like ML_ABSTRACT_CLASS_HEADER_EXPORTED with a non existing export symbol.
#define STATIC_GRAPH_PROPERTY(Type, lowerCaseName, upperCaseName)
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
#define VESSELGRAPH_END_NAMESPACE
#define VESSELGRAPH_EXPORT
Definiert systemspezifische Macros, die f"ur diese DLL gelten sollen.
#define VESSELGRAPH_BEGIN_NAMESPACE