25#ifndef OCCTL_HPP_SURFACES_HPP
26#define OCCTL_HPP_SURFACES_HPP
40#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L
42 #define OCCTL_HPP_HAS_SPAN 1
44 #define OCCTL_HPP_HAS_SPAN 0
65 explicit operator bool() const noexcept {
return myGraph !=
nullptr && myId.
bits != 0; }
132 double aU = 0.0, aV = 0.0, aDist = 0.0;
134 return {aU, aV, aDist};
142 double aU = 0.0, aV = 0.0;
203 void parameter_range(
double& theUMin,
double& theUMax,
double& theVMin,
double& theVMax)
const
253 struct RevolutionView;
254 struct ExtrusionView;
255 struct RectangularTrimmedView;
259 inline RevolutionView as_revolution()
const;
260 inline ExtrusionView as_extrusion()
const;
261 inline RectangularTrimmedView as_rectangular_trimmed()
const;
262 inline OffsetView as_offset()
const;
387 std::vector<occtl_point3_t> aVec(aNb);
398 std::vector<double> aVec(aNb);
409 std::vector<double> aVec(aNb);
420 std::vector<int32_t> aVec(aNb);
431 std::vector<int32_t> aVec(aNb);
442 std::vector<double> aVec(aNb);
453 std::vector<double> aVec(aNb);
464 std::vector<double> aVec(aNb);
626 const std::vector<const Curve*>& theCurves,
629 std::vector<occtl_rep_id_t> aRaw;
630 aRaw.reserve(theCurves.size());
631 for (
const Curve* aCurve : theCurves)
633 aRaw.push_back(aCurve ==
nullptr ?
occtl_rep_id_t{0} : aCurve->id());
637 OCCTL_SURFACE_BOUNDARY_CURVES_CREATE_INFO_INIT;
638 anInfo.
curves = aRaw.empty() ? nullptr : aRaw.data();
640 anInfo.
style = theStyle;
649 const std::vector<const Curve*>& theProfiles,
650 const std::vector<const Curve*>& theGuides,
651 const double theTolerance = 1.0e-7,
652 const bool theParallel =
false)
654 std::vector<occtl_rep_id_t> aProfileRaw;
655 aProfileRaw.reserve(theProfiles.size());
656 for (
const Curve* aCurve : theProfiles)
658 aProfileRaw.push_back(aCurve ==
nullptr ?
occtl_rep_id_t{0} : aCurve->id());
661 std::vector<occtl_rep_id_t> aGuideRaw;
662 aGuideRaw.reserve(theGuides.size());
663 for (
const Curve* aCurve : theGuides)
665 aGuideRaw.push_back(aCurve ==
nullptr ?
occtl_rep_id_t{0} : aCurve->id());
669 anInfo.
profiles = aProfileRaw.empty() ? nullptr : aProfileRaw.data();
671 anInfo.
guides = aGuideRaw.empty() ? nullptr : aGuideRaw.data();
674 anInfo.
parallel = theParallel ? 1 : 0;
683 const std::vector<const Curve*>& theUCurves,
684 const std::vector<const Curve*>& theVCurves,
685 const double theTolerance = 1.0e-7,
686 const bool theParallel =
false)
688 std::vector<occtl_rep_id_t> aURaw;
689 aURaw.reserve(theUCurves.size());
690 for (
const Curve* aCurve : theUCurves)
692 aURaw.push_back(aCurve ==
nullptr ?
occtl_rep_id_t{0} : aCurve->id());
695 std::vector<occtl_rep_id_t> aVRaw;
696 aVRaw.reserve(theVCurves.size());
697 for (
const Curve* aCurve : theVCurves)
699 aVRaw.push_back(aCurve ==
nullptr ?
occtl_rep_id_t{0} : aCurve->id());
703 anInfo.
u_curves = aURaw.empty() ? nullptr : aURaw.data();
705 anInfo.
v_curves = aVRaw.empty() ? nullptr : aVRaw.data();
708 anInfo.
parallel = theParallel ? 1 : 0;
722 std::vector<occtl_point3_t> aResult(aNb);
736 std::vector<Curve> aResult;
737 aResult.reserve(aNb);
738 for (
size_t anI = 0; anI < aNb; ++anI)
740 aResult.emplace_back(myGraph, aRaw[anI]);
758 std::tuple<occtl_point3_t, occtl_vector3_t, occtl_vector3_t>
eval_d1(
const double theU,
759 const double theV)
const
764 return {aP, aD1U, aD1V};
777 eval_d2(
const double theU,
const double theV)
const
783 return {aP, aD1U, aD1V, aD2U, aD2V, aD2UV};
799 eval_d3(
const double theU,
const double theV)
const
818 return {aP, aD1U, aD1V, aD2U, aD2V, aD2UV, aD3U, aD3V, aD3UUV, aD3UVV};
828 const int32_t theNv)
const
870inline Surface::ExtrusionView Surface::as_extrusion()
const
877inline Surface::RectangularTrimmedView Surface::as_rectangular_trimmed()
const
879 double aU0 = 0.0, aU1 = 0.0, aV0 = 0.0, aV1 = 0.0;
881 return {aU0, aU1, aV0, aV1};
884inline Surface::OffsetView Surface::as_offset()
const
902 int32_t u_degree()
const noexcept {
return raw.
u_degree; }
904 int32_t v_degree()
const noexcept {
return raw.
v_degree; }
906 bool is_rational()
const noexcept {
return raw.
is_rational != 0; }
908 bool is_u_periodic()
const noexcept {
return raw.
is_u_periodic != 0; }
910 bool is_v_periodic()
const noexcept {
return raw.
is_v_periodic != 0; }
912 size_t u_pole_count()
const noexcept {
return raw.
u_pole_count; }
914 size_t v_pole_count()
const noexcept {
return raw.
v_pole_count; }
916 size_t u_knot_count()
const noexcept {
return raw.
u_knot_count; }
918 size_t v_knot_count()
const noexcept {
return raw.
v_knot_count; }
924#if OCCTL_HPP_HAS_SPAN
925 std::span<const occtl_point3_t> poles()
const noexcept
930 std::span<const double> weights()
const noexcept
933 : std::span<const double>{};
936 std::span<const double> u_knots()
const noexcept {
return {raw.
u_knots, raw.
u_knot_count}; }
938 std::span<const double> v_knots()
const noexcept {
return {raw.
v_knots, raw.
v_knot_count}; }
940 std::span<const int32_t> u_multiplicities()
const noexcept
945 std::span<const int32_t> v_multiplicities()
const noexcept
950 std::span<const double> u_flat_knots()
const noexcept
955 std::span<const double> v_flat_knots()
const noexcept
962 const double* weights()
const noexcept {
return raw.
weights; }
964 const double* u_knots()
const noexcept {
return raw.
u_knots; }
966 const double* v_knots()
const noexcept {
return raw.
v_knots; }
968 const int32_t* u_multiplicities()
const noexcept {
return raw.
u_multiplicities; }
970 const int32_t* v_multiplicities()
const noexcept {
return raw.
v_multiplicities; }
972 const double* u_flat_knots()
const noexcept {
return raw.
u_flat_knots; }
974 const double* v_flat_knots()
const noexcept {
return raw.
v_flat_knots; }
Non-owning reference to a 3D geometric curve stored in a graph.
Definition curves.hpp:54
occtl_rep_id_t id() const noexcept
Returns the representation id.
Definition curves.hpp:70
Non-owning reference to a geometric surface stored in a graph.
Definition surfaces.hpp:55
static Surface from_sphere(occtl_graph_t *graph, const occtl_geom_spherical_surface_t &theSphere)
Constructs a surface from a sphere.
Definition surfaces.hpp:508
size_t bspline_u_pole_count() const
Returns the number of poles in the U direction.
Definition surfaces.hpp:293
static Surface from_bspline(occtl_graph_t *graph, const occtl_surface_bspline_create_info_t &theInfo)
Constructs a B-spline surface from the given create info.
Definition surfaces.hpp:526
static Surface from_extrusion(occtl_graph_t *graph, const occtl_surface_extrusion_create_info_t &theInfo)
Constructs a surface of linear extrusion.
Definition surfaces.hpp:566
int32_t is_periodic() const
Returns 1 when the surface is periodic in either U or V direction.
Definition surfaces.hpp:185
occtl_point3_t eval_d0(const double theU, const double theV) const
Evaluates the surface point at (theU, theV).
Definition surfaces.hpp:748
occtl_rep_id_t id() const noexcept
Returns the representation id.
Definition surfaces.hpp:71
std::tuple< occtl_point3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t > eval_d3(const double theU, const double theV) const
Evaluates point and first-, second-, and third-order partial derivatives at (theU,...
Definition surfaces.hpp:799
std::vector< double > bspline_u_flat_knots() const
Copies the expanded U flat knot sequence into a vector.
Definition surfaces.hpp:449
occtl_geom_conical_surface_t as_cone() const
Extracts the underlying cone.
Definition surfaces.hpp:228
size_t bezier_v_pole_count() const
Returns the number of poles in the V direction of a Bezier surface.
Definition surfaces.hpp:365
Surface transformed(const Transform &theTrsf) const
Returns a transformed copy of this surface stored in the same graph.
Definition surfaces.hpp:84
std::vector< int32_t > bspline_u_multiplicities() const
Copies U knot multiplicities into a vector.
Definition surfaces.hpp:416
occtl_geom_cylindrical_surface_t as_cylinder() const
Extracts the underlying cylinder.
Definition surfaces.hpp:219
BSplineView as_bspline() const
Returns a aggregate inspection view of a B-spline surface.
Definition surfaces.hpp:978
size_t bspline_v_knot_count() const
Returns the number of distinct V knot values.
Definition surfaces.hpp:320
void parameter_range(double &theUMin, double &theUMax, double &theVMin, double &theVMax) const
Returns the parameter range via out-parameters.
Definition surfaces.hpp:203
static Surface from_revolution(occtl_graph_t *graph, const occtl_surface_revolution_create_info_t &theInfo)
Constructs a surface of revolution.
Definition surfaces.hpp:556
std::vector< double > bspline_u_knots() const
Copies U knot values into a vector.
Definition surfaces.hpp:394
static Surface from_approximation(occtl_graph_t *graph, const occtl_surface_approximated_info_t &theInfo)
Constructs a surface by approximating the given point grid.
Definition surfaces.hpp:605
static Surface from_cylinder(occtl_graph_t *graph, const occtl_geom_cylindrical_surface_t &theCyl)
Constructs a surface from a cylinder.
Definition surfaces.hpp:490
Surface rotated(const Axis1Placement &theAxis, double theAngle) const
Returns a rotated copy of this surface stored in the same graph.
Definition surfaces.hpp:102
std::vector< Curve > intersect_surface(const Surface &theOther, double theTolerance=1.0e-7) const
Computes intersection curves with another surface. Each result curve wraps a rep id in the same graph...
Definition surfaces.hpp:730
std::vector< double > bspline_v_knots() const
Copies V knot values into a vector.
Definition surfaces.hpp:405
static Surface from_offset(occtl_graph_t *graph, const occtl_surface_offset_create_info_t &theInfo)
Constructs an offset surface.
Definition surfaces.hpp:585
int32_t is_closed() const
Returns 1 when the surface is closed in both U and V directions.
Definition surfaces.hpp:176
occtl_geom_continuity_t continuity() const
Returns the geometric continuity class.
Definition surfaces.hpp:194
static Surface from_gordon(occtl_graph_t *graph, const std::vector< const Curve * > &theProfiles, const std::vector< const Curve * > &theGuides, const double theTolerance=1.0e-7, const bool theParallel=false)
Constructs a Gordon B-spline surface from profile and guide curves.
Definition surfaces.hpp:648
std::tuple< occtl_point3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t, occtl_vector3_t > eval_d2(const double theU, const double theV) const
Evaluates point and first- and second-order partial derivatives at (theU, theV). Returns (point,...
Definition surfaces.hpp:777
Surface(occtl_graph_t *theGraph=nullptr, occtl_rep_id_t theId=occtl_rep_id_t{0}) noexcept
Constructs a null reference (no graph, invalid id).
Definition surfaces.hpp:58
occtl_vector3_t eval_dn(const double theU, const double theV, const int32_t theNu, const int32_t theNv) const
Returns a partial derivative vector at (theU, theV).
Definition surfaces.hpp:825
static Surface from_interpolation(occtl_graph_t *graph, const occtl_surface_interpolated_info_t &theInfo)
Constructs a surface by interpolating through the given point grid.
Definition surfaces.hpp:595
occtl_surface_kind_t kind() const
Returns the kind of surface this handle holds.
Definition surfaces.hpp:149
size_t bspline_u_knot_count() const
Returns the number of distinct U knot values.
Definition surfaces.hpp:311
occtl_graph_t * graph() const noexcept
Borrows it — returns the graph pointer.
Definition surfaces.hpp:68
std::pair< double, double > uv_of_point(const Point3 &thePoint) const
Returns the UV coordinates on the surface nearest to a point.
Definition surfaces.hpp:140
static Surface from_plane(occtl_graph_t *graph, const occtl_geom_plane_t &thePlane)
Constructs a surface from a plane.
Definition surfaces.hpp:481
Surface reversed() const
Returns a U-reversed copy of this surface stored in the same graph.
Definition surfaces.hpp:75
occtl_geom_spherical_surface_t as_sphere() const
Extracts the underlying sphere.
Definition surfaces.hpp:237
int32_t bspline_v_degree() const
Returns the V polynomial degree.
Definition surfaces.hpp:284
std::vector< double > bspline_weights() const
Copies all weights (row-major u*v_pole_count + v) into a vector.
Definition surfaces.hpp:438
const occtl_point3_t * bspline_poles_view(size_t &theNbU, size_t &theNbV) const
Returns a zero-copy view of the surface poles array (row-major u*v_pole_count + v)....
Definition surfaces.hpp:472
std::vector< occtl_point3_t > bspline_poles() const
Copies poles (row-major: u * v_pole_count + v) into a vector.
Definition surfaces.hpp:383
int32_t bspline_is_rational() const
Returns 1 when the surface is rational in either U or V, 0 otherwise.
Definition surfaces.hpp:329
static Surface from_cone(occtl_graph_t *graph, const occtl_geom_conical_surface_t &theCone)
Constructs a surface from a cone.
Definition surfaces.hpp:499
static Surface from_point_grid(occtl_graph_t *graph, const occtl_surface_point_grid_create_info_t &theInfo)
Constructs a B-spline surface from a point grid.
Definition surfaces.hpp:615
int32_t bezier_v_degree() const
Returns the V degree of a Bezier surface.
Definition surfaces.hpp:347
static Surface from_bezier(occtl_graph_t *graph, const occtl_surface_bezier_create_info_t &theInfo)
Constructs a Bezier surface from the given create info.
Definition surfaces.hpp:536
static Surface from_rectangular_trimmed(occtl_graph_t *graph, const occtl_surface_rectangular_trimmed_create_info_t &theInfo)
Constructs a rectangular-trimmed surface.
Definition surfaces.hpp:575
size_t bspline_v_pole_count() const
Returns the number of poles in the V direction.
Definition surfaces.hpp:302
occtl_geom_toroidal_surface_t as_torus() const
Extracts the underlying torus.
Definition surfaces.hpp:246
Surface translated(const Vector3 &theDelta) const
Returns a translated copy of this surface stored in the same graph.
Definition surfaces.hpp:93
std::vector< int32_t > bspline_v_multiplicities() const
Copies V knot multiplicities into a vector.
Definition surfaces.hpp:427
std::vector< double > bspline_v_flat_knots() const
Copies the expanded V flat knot sequence into a vector.
Definition surfaces.hpp:460
int32_t bezier_is_rational() const
Returns 1 when the Bezier surface is rational, 0 otherwise.
Definition surfaces.hpp:374
std::tuple< occtl_point3_t, occtl_vector3_t, occtl_vector3_t > eval_d1(const double theU, const double theV) const
Evaluates point and first-order partial derivatives at (theU, theV). Returns (point,...
Definition surfaces.hpp:758
static Surface from_torus(occtl_graph_t *graph, const occtl_geom_toroidal_surface_t &theTorus)
Constructs a surface from a torus.
Definition surfaces.hpp:517
static Surface from_boundary_curves(occtl_graph_t *graph, const std::vector< const Curve * > &theCurves, ::occtl_surface_filling_style_t theStyle=OCCTL_SURFACE_FILLING_STRETCH)
Constructs a B-spline surface from contiguous boundary curves.
Definition surfaces.hpp:624
std::vector< occtl_point3_t > intersect_curve(const Curve &theCurve) const
Computes intersection points with a curve. Two-call pattern handled internally; returns a vector of i...
Definition surfaces.hpp:718
int32_t is_v_periodic() const
Returns 1 when the surface is periodic in the V direction.
Definition surfaces.hpp:167
size_t bezier_u_pole_count() const
Returns the number of poles in the U direction of a Bezier surface.
Definition surfaces.hpp:356
Surface scaled(const Point3 &theOrigin, double theFactor) const
Returns a scaled copy of this surface stored in the same graph.
Definition surfaces.hpp:111
int32_t is_u_periodic() const
Returns 1 when the surface is periodic in the U direction.
Definition surfaces.hpp:158
std::tuple< double, double, double > project_point(const Point3 &thePoint) const
Projects a point onto the surface.
Definition surfaces.hpp:130
double area() const
Returns the surface area over its full UV domain.
Definition surfaces.hpp:120
int32_t bspline_u_degree() const
Returns the U polynomial degree.
Definition surfaces.hpp:275
occtl_geom_plane_t as_plane() const
Extracts the underlying plane.
Definition surfaces.hpp:210
int32_t bezier_u_degree() const
Returns the U degree of a Bezier surface.
Definition surfaces.hpp:338
static Surface from_bezier_grid(occtl_graph_t *graph, const occtl_surface_bezier_create_info_t &theInfo)
Constructs a Bezier surface from a row-major pole grid.
Definition surfaces.hpp:546
static Surface from_curve_grid(occtl_graph_t *graph, const std::vector< const Curve * > &theUCurves, const std::vector< const Curve * > &theVCurves, const double theTolerance=1.0e-7, const bool theParallel=false)
Constructs a B-spline surface from an intersecting U/V curve grid.
Definition surfaces.hpp:682
C++ veneer for the core module.
void check(const ::occtl_status_t theStatus)
Throw on non-OK; otherwise a no-op.
Definition core.hpp:85
C++ veneer for 3D curve representations in the topology graph.
C++ veneer for the geom module.
enum occtl_geom_continuity occtl_geom_continuity_t
OCCT-Light: surface geometry via graph + rep_id.
occtl_status_t occtl_surface_transformed(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_transform_t transform, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_eval_d3(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v, occtl_vector3_t *out_d2u, occtl_vector3_t *out_d2v, occtl_vector3_t *out_d2uv, occtl_vector3_t *out_d3u, occtl_vector3_t *out_d3v, occtl_vector3_t *out_d3uuv, occtl_vector3_t *out_d3uvv)
occtl_status_t occtl_surface_as_plane(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_plane_t *out_plane)
occtl_status_t occtl_surface_create_sphere(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_spherical_surface_t sphere)
occtl_status_t occtl_surface_create_extrusion(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_extrusion_create_info_t *info)
occtl_status_t occtl_surface_continuity(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_continuity_t *out_continuity)
occtl_status_t occtl_surface_bezier_v_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_bezier_u_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_as_revolution(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_axis1_placement_t *out_axis)
occtl_status_t occtl_surface_bspline_v_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_parameter_range(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_u_min, double *out_u_max, double *out_v_min, double *out_v_max)
occtl_status_t occtl_surface_as_cone(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_conical_surface_t *out_cone)
occtl_status_t occtl_surface_eval_d0(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point)
occtl_status_t occtl_surface_create_gordon(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_gordon_create_info_t *info)
occtl_status_t occtl_surface_is_v_periodic(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_periodic)
occtl_status_t occtl_surface_bspline_u_multiplicities(occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_reverse(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_is_closed(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_closed)
occtl_status_t occtl_surface_as_cylinder(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_cylindrical_surface_t *out_cylinder)
occtl_status_t occtl_surface_bspline_u_knot_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_bspline_v_knot_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_eval_d2(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v, occtl_vector3_t *out_d2u, occtl_vector3_t *out_d2v, occtl_vector3_t *out_d2uv)
occtl_status_t occtl_surface_project_point(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t point, double *out_u, double *out_v, double *out_distance)
occtl_status_t occtl_surface_as_rectangular_trimmed(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_u_first, double *out_u_last, double *out_v_first, double *out_v_last)
occtl_status_t occtl_surface_bspline_v_flat_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_bspline_u_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_bspline_v_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_create_bezier(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_bezier_create_info_t *info)
occtl_status_t occtl_surface_as_torus(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_toroidal_surface_t *out_torus)
occtl_status_t occtl_surface_bspline_v_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_intersect_curve(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_rep_id_t curve_id, occtl_point3_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_create_bspline(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_bspline_create_info_t *info)
occtl_status_t occtl_surface_bspline_is_rational(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_rational)
occtl_status_t occtl_surface_area(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_area)
occtl_status_t occtl_surface_as_offset(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_offset)
occtl_status_t occtl_surface_create_cylinder(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_cylindrical_surface_t cylinder)
occtl_status_t occtl_surface_rotated(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_axis1_placement_t axis, double angle, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_bezier_u_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_create_bezier_grid(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_bezier_create_info_t *info)
occtl_status_t occtl_surface_as_extrusion(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_vector3_t *out_direction)
occtl_status_t occtl_surface_create_plane(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_plane_t plane)
occtl_status_t occtl_surface_bezier_is_rational(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_rational)
occtl_status_t occtl_surface_scaled(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t origin, double factor, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_bezier_v_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_create_from_curve_grid(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_curve_grid_create_info_t *info)
occtl_status_t occtl_surface_create_torus(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_toroidal_surface_t torus)
occtl_status_t occtl_surface_create_from_point_grid(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_point_grid_create_info_t *info)
occtl_surface_kind
Definition occtl_surfaces.h:52
occtl_status_t occtl_surface_create_revolution(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_revolution_create_info_t *info)
occtl_status_t occtl_surface_eval_d1(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v)
occtl_status_t occtl_surface_is_u_periodic(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_periodic)
enum occtl_surface_kind occtl_surface_kind_t
occtl_status_t occtl_surface_bspline_u_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_eval_dn(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, int32_t nu, int32_t nv, occtl_vector3_t *out_derivative)
occtl_status_t occtl_surface_surface_intersect(occtl_graph_t *graph, occtl_rep_id_t surface_a, occtl_rep_id_t surface_b, double tolerance, occtl_rep_id_t **out_ids, size_t *out_count)
occtl_status_t occtl_surface_create_approximated(occtl_graph_t *graph, const occtl_surface_approximated_info_t *info, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_bspline_poles_view(occtl_graph_t *graph, occtl_rep_id_t surface_id, const occtl_point3_t **out_data, size_t *out_u_count, size_t *out_v_count)
occtl_status_t occtl_surface_as_sphere(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_spherical_surface_t *out_sphere)
occtl_status_t occtl_surface_create_from_boundary_curves(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_boundary_curves_create_info_t *info)
occtl_status_t occtl_surface_bspline_u_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_bspline_poles(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_bspline_v_multiplicities(occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_create_interpolated(occtl_graph_t *graph, const occtl_surface_interpolated_info_t *info, occtl_rep_id_t *out_id)
enum occtl_surface_filling_style occtl_surface_filling_style_t
occtl_status_t occtl_surface_uv_of_point(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t point, double *out_u, double *out_v)
occtl_status_t occtl_surface_is_periodic(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_periodic)
occtl_status_t occtl_surface_as_bspline(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_surface_bspline_t *out)
occtl_status_t occtl_surface_translated(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_vector3_t delta, occtl_rep_id_t *out_id)
void occtl_surface_bspline_init(occtl_surface_bspline_t *out)
occtl_status_t occtl_surface_create_cone(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_conical_surface_t cone)
@ OCCTL_SURFACE_FILLING_STRETCH
Definition occtl_surfaces.h:1974
occtl_status_t occtl_surface_bspline_u_flat_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_create_rectangular_trimmed(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_rectangular_trimmed_create_info_t *info)
occtl_status_t occtl_surface_bspline_weights(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_create_offset(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_offset_create_info_t *info)
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Directed line in 3D (origin + unit direction). Mirrors occtl_axis1_placement_t.
Definition geom.hpp:365
const occtl_axis1_placement_t & c_type() const noexcept
Borrows-it view of the underlying C value type.
Definition geom.hpp:379
3D point value type. Mirrors occtl_point3_t with STL-flavoured access.
Definition geom.hpp:82
const occtl_point3_t & c_type() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition geom.hpp:102
Aggregate inspection view of a B-spline surface.
Definition surfaces.hpp:899
Definition surfaces.hpp:846
Definition surfaces.hpp:859
Definition surfaces.hpp:851
Definition surfaces.hpp:841
3D free-vector value type. Mirrors occtl_vector3_t.
Definition geom.hpp:184
const occtl_vector3_t & c_type() const noexcept
Borrows-it view of the underlying C value type.
Definition geom.hpp:204
Definition occtl_geom.h:111
Definition occtl_geom.h:949
Definition occtl_geom.h:926
Definition occtl_geom.h:916
Definition occtl_geom.h:937
Definition occtl_geom.h:962
Definition occtl_geom.h:76
Definition occtl_core.h:251
uint64_t bits
Definition occtl_core.h:252
Definition occtl_surfaces.h:1827
Definition occtl_surfaces.h:469
Definition occtl_surfaces.h:1987
const occtl_rep_id_t * curves
Definition occtl_surfaces.h:1990
occtl_surface_filling_style_t style
Definition occtl_surfaces.h:1992
size_t curve_count
Definition occtl_surfaces.h:1991
Definition occtl_surfaces.h:390
Definition occtl_surfaces.h:1512
int32_t is_v_periodic
Definition occtl_surfaces.h:1520
size_t v_flat_knot_count
Definition occtl_surfaces.h:1526
const int32_t * v_multiplicities
Definition occtl_surfaces.h:1540
int32_t is_rational
Definition occtl_surfaces.h:1518
const double * u_knots
Definition occtl_surfaces.h:1537
size_t v_knot_count
Definition occtl_surfaces.h:1524
const double * weights
Definition occtl_surfaces.h:1535
const double * v_flat_knots
Definition occtl_surfaces.h:1542
size_t u_knot_count
Definition occtl_surfaces.h:1523
int32_t u_degree
Definition occtl_surfaces.h:1516
const double * u_flat_knots
Definition occtl_surfaces.h:1541
const double * v_knots
Definition occtl_surfaces.h:1538
size_t u_flat_knot_count
Definition occtl_surfaces.h:1525
int32_t is_u_periodic
Definition occtl_surfaces.h:1519
const int32_t * u_multiplicities
Definition occtl_surfaces.h:1539
const occtl_point3_t * poles
Definition occtl_surfaces.h:1532
size_t u_pole_count
Definition occtl_surfaces.h:1521
size_t v_pole_count
Definition occtl_surfaces.h:1522
int32_t v_degree
Definition occtl_surfaces.h:1517
Definition occtl_surfaces.h:2119
const occtl_rep_id_t * u_curves
Definition occtl_surfaces.h:2122
size_t u_curve_count
Definition occtl_surfaces.h:2123
double tolerance
Definition occtl_surfaces.h:2126
const occtl_rep_id_t * v_curves
Definition occtl_surfaces.h:2124
size_t v_curve_count
Definition occtl_surfaces.h:2125
int32_t parallel
Definition occtl_surfaces.h:2127
Definition occtl_surfaces.h:222
Definition occtl_surfaces.h:2053
int32_t parallel
Definition occtl_surfaces.h:2061
size_t guide_count
Definition occtl_surfaces.h:2059
size_t profile_count
Definition occtl_surfaces.h:2057
double tolerance
Definition occtl_surfaces.h:2060
const occtl_rep_id_t * guides
Definition occtl_surfaces.h:2058
const occtl_rep_id_t * profiles
Definition occtl_surfaces.h:2056
Definition occtl_surfaces.h:1766
Definition occtl_surfaces.h:336
Definition occtl_surfaces.h:1898
Definition occtl_surfaces.h:274
Definition occtl_surfaces.h:167
Definition occtl_geom.h:84