/**
* Given a TopoDS_Face @p face and the reference coordinates within this
* face, returns the corresponding point in real space, the normal to the
- * surface at that point and the mean curvature as a tuple.
+ * surface at that point and the min and max curvatures as a tuple.
*/
- std_cxx11::tuple<Point<3>, Point<3>, double >
+ std_cxx11::tuple<Point<3>, Point<3>, double, double>
push_forward_and_differential_forms(const TopoDS_Face &face,
const double u,
const double v,
/**
* Get the closest point to the given topological shape, together with the
- * normal and the mean curvature at that point. If the shape is not
+ * normal and the min and max curvatures at that point. If the shape is not
* elementary, all its sub-faces (only the faces) are iterated, faces first,
* and only the closest point is returned. This function will throw an
* exception if the @p in_shape does not contain at least one face.
*/
- std_cxx11::tuple<Point<3>, Point<3>, double>
+ std_cxx11::tuple<Point<3>, Point<3>, double, double>
closest_point_and_differential_forms(const TopoDS_Shape &in_shape,
const Point<3> &origin,
const double tolerance=1e-7);
{
for (unsigned int i=0; i<surrounding_points.size(); ++i)
{
- std_cxx11::tuple<Point<3>, Point<3>, double>
+ std_cxx11::tuple<Point<3>, Point<3>, double, double>
p_and_diff_forms =
closest_point_and_differential_forms(sh,
surrounding_points[i],
return std_cxx11::get<0>(ref);
}
- std_cxx11::tuple<Point<3>, Point<3>, double>
+ std_cxx11::tuple<Point<3>, Point<3>, double, double>
closest_point_and_differential_forms(const TopoDS_Shape &in_shape,
const Point<3> &origin,
const double tolerance)
return Point<3>();
}
- std_cxx11::tuple<Point<3>, Point<3>, double >
+ std_cxx11::tuple<Point<3>, Point<3>, double, double>
push_forward_and_differential_forms(const TopoDS_Face &face,
const double u,
const double v,
Assert(props.IsNormalDefined(), ExcMessage("Normal is not well defined!"));
gp_Dir Normal = props.Normal();
Assert(props.IsCurvatureDefined(), ExcMessage("Curvature is not well defined!"));
- Standard_Real Mean_Curvature = props.MeanCurvature();
+ Standard_Real Min_Curvature = props.MinCurvature();
+ Standard_Real Max_Curvature = props.MaxCurvature();
Point<3> normal = Point<3>(Normal.X(),Normal.Y(),Normal.Z());
// In the case your manifold changes from convex to concave or viceversa
if (face.Orientation()==TopAbs_REVERSED)
{
normal *= -1;
- Mean_Curvature *= -1;
+ Min_Curvature *= -1;
+ Max_Curvature *= -1;
}
- return std_cxx11::tuple<Point<3>, Point<3>, double>(point(Value), normal, Mean_Curvature);
+ return std_cxx11::tuple<Point<3>, Point<3>, double, double>(point(Value), normal, Min_Curvature, Max_Curvature);
}