21 #ifndef TREEBRANCHPRODUCER_H
22 #define TREEBRANCHPRODUCER_H
28 #include <boost/bind.hpp>
29 #include <boost/thread.hpp>
30 #include <vtkClipPolyData.h>
31 #include <vtkAppendPolyData.h>
34 #include <vtkCleanPolyData.h>
40 boost::thread_group t_group;
50 float Distance2Length;
52 vtkPolyData *ChildRegions[4];
55 vtkCleanPolyData *polyCleaner;
56 vtkClipPolyData *clipper;
57 vtkAppendPolyData *appendPoly;
58 boost::shared_ptr<Branch> Patella;
60 std::list<boost::shared_ptr<Branch> > &BranchList;
61 boost::shared_ptr<Branch> root;
63 void SplitRegion(boost::shared_ptr< Branch > branch);
64 void ComputeCutPlane(boost::shared_ptr<Branch>,
float degrees = 90.0);
65 void SetBranchingAngle();
67 inline void SetPatella(
double len = 0.001)
72 inline void SetPatella(
double len,
double diameter)
77 void SetChildDiameters();
78 void SetChildLength();
79 double ComputeCenterOfVolume(
double step,
float precision, vtkPolyData *region,
double branchLenght);
80 void TranslateNewBranches(boost::shared_ptr<Branch>, boost::shared_ptr<Branch>);
81 void Generate(boost::shared_ptr<Branch>);
82 void GoToNextRecursion(boost::shared_ptr<Branch>, boost::shared_ptr<Branch>);
92 void RemovePunkRegions();
98 TreeBranchProducer(std::list<boost::shared_ptr<Branch> > &p_list, boost::shared_ptr<Branch> p_masterRoot,
int p_rate,
bool p_threads =
false);
102 #endif // TREEBRANCHPRODUCER_H