1 #ifndef occ_line_smoothing_h
2 #define occ_line_smoothing_h
5 #include <TopoDS_Shape.hxx>
6 #include <Geom_Plane.hxx>
7 #include <GeomLib_Tool.hxx>
8 #include <GeomAdaptor_Curve.hxx>
26 bool operator() (std::pair<double, double> a,std::pair<double, double> b)
const
28 return a.second<b.second;
72 Handle(Geom_Curve) ref_curve,
73 TopLoc_Location *curr_loc,
75 const std::vector<bool> &smoothing_dofs,
76 const unsigned int base_point_id,
77 const unsigned int driving_point_id,
78 const double tolerance = 1e-4);
80 void update_reference(
unsigned int base_point_id,
81 unsigned int driving_point_id);
96 void smooth(
bool maintain_on_original_curve=
true);
98 inline Handle(Geom_Curve) get_curve()
105 return this->lengths_before_smoothing;
110 return this->lengths_after_smoothing;
115 return this->node_indices;
119 void get_curve_tangent_vectors_at_smoothing_dofs(
Vector<double> &tangents);
121 void get_curve_length_ratios_at_smoothing_dofs(
Vector<double> &length_ratios);
128 Handle(Geom_Curve) ref_curve;
129 TopLoc_Location ref_location;
130 TopLoc_Location used_location;
131 TopLoc_Location *curr_location;
136 const
std::vector<
bool> &smoothing_dofs;
137 unsigned int base_point_id;
138 unsigned int driving_point_id;
140 double occ_driving_t;
150 std::vector<
unsigned int> node_indices;
Vector< double > & get_lengths_after_smoothing()
std::vector< unsigned int > & get_node_indices()
Vector< double > & euler_vector
Handle(Geom_Curve) get_curve()
std::map< std::pair< double, double >, unsigned int, comp_points_on_curve >::iterator iterator
We collect in this namespace all utilities which operate on OpenCascade entities which don't need cla...
Handle(Geom_Curve) NumericalTowingTank
Vector< double > & get_lengths_before_smoothing()