25#ifndef OCCTL_HPP_CURVES2D_HPP
26#define OCCTL_HPP_CURVES2D_HPP
39#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L
41 #define OCCTL_HPP_HAS_SPAN 1
43 #define OCCTL_HPP_HAS_SPAN 0
66 explicit operator bool() const noexcept {
return myGraph !=
nullptr && myId.
bits != 0; }
87 double theRotateAngle,
89 double theScaleY)
const
147 return {aParam, aDist};
337 std::vector<occtl_point2_t> aVec(aNb);
348 std::vector<double> aVec(aNb);
359 std::vector<int32_t> aVec(aNb);
370 std::vector<double> aVec(aNb);
381 std::vector<double> aVec(aNb);
424 std::vector<occtl_geom2d_circle_t> aCircles(aCount);
425 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
443 std::vector<Curve2d> anArcs;
444 anArcs.reserve(aCount);
445 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
449 anArcs.emplace_back(
graph, anArc);
462 std::vector<occtl_geom2d_line_t> aLines(aCount);
463 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
482 std::vector<occtl_geom2d_line_t> aLines(aCount);
483 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
502 std::vector<occtl_geom2d_line_t> aLines(aCount);
503 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
522 std::vector<occtl_geom2d_circle_t> aCircles(aCount);
523 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
542 std::vector<occtl_geom2d_circle_t> aCircles(aCount);
543 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
563 std::vector<occtl_geom2d_circle_t> aCircles(aCount);
564 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
584 std::vector<occtl_geom2d_circle_t> aCircles(aCount);
585 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
679 std::pair<occtl_point2_t, occtl_vector2_t>
eval_d1(
const double theU)
const
689 std::tuple<occtl_point2_t, occtl_vector2_t, occtl_vector2_t>
eval_d2(
const double theU)
const
694 return {aP, aD1, aD2};
699 std::tuple<occtl_point2_t, occtl_vector2_t, occtl_vector2_t, occtl_vector2_t>
eval_d3(
700 const double theU)
const
705 return {aP, aD1, aD2, aD3};
758 int32_t degree()
const noexcept {
return raw.
degree; }
760 bool is_rational()
const noexcept {
return raw.
is_rational != 0; }
762 bool is_periodic()
const noexcept {
return raw.
is_periodic != 0; }
764 bool is_closed()
const noexcept {
return raw.
is_closed != 0; }
771 size_t pole_count()
const noexcept {
return raw.
pole_count; }
773 size_t knot_count()
const noexcept {
return raw.
knot_count; }
775 size_t flat_knot_count()
const noexcept {
return raw.
flat_knot_count; }
777#if OCCTL_HPP_HAS_SPAN
778 std::span<const occtl_point2_t> poles()
const noexcept {
return {raw.
poles, raw.
pole_count}; }
780 std::span<const double> weights()
const noexcept
783 : std::span<const double>{};
786 std::span<const double> knots()
const noexcept {
return {raw.
knots, raw.
knot_count}; }
788 std::span<const int32_t> multiplicities()
const noexcept
793 std::span<const double> flat_knots()
const noexcept
800 const double* weights()
const noexcept {
return raw.
weights; }
802 const double* knots()
const noexcept {
return raw.
knots; }
804 const int32_t* multiplicities()
const noexcept {
return raw.
multiplicities; }
806 const double* flat_knots()
const noexcept {
return raw.
flat_knots; }
813 aView.raw = OCCTL_CURVE2D_BSPLINE_INIT;
824 std::vector<Curve2d> aResult;
825 aResult.reserve(aNb);
826 for (
size_t anI = 0; anI < aNb; ++anI)
828 aResult.emplace_back(myGraph, aIds[anI]);
Non-owning reference to a 2D geometric curve stored in a graph.
Definition curves2d.hpp:56
int32_t bezier_is_rational() const
Returns 1 when the Bezier curve is rational, 0 otherwise.
Definition curves2d.hpp:324
double length() const
Returns the curve length over its full parameter range.
Definition curves2d.hpp:132
Curve2d transformed(double theTranslateX, double theTranslateY, double theRotateAngle, double theScaleX, double theScaleY) const
Returns a transformed copy of this curve stored in the same graph.
Definition curves2d.hpp:85
static std::vector< occtl_geom2d_line_t > lines_tangent_to_two(occtl_graph_t *graph, const occtl_curve2d_line_tangent_to_two_info_t &theInfo)
Computes all 2D lines tangent to two 2D curves.
Definition curves2d.hpp:456
std::vector< double > bspline_flat_knots() const
Copies the expanded (flat) knot sequence into a vector.
Definition curves2d.hpp:377
std::vector< occtl_point2_t > bspline_poles() const
Copies all poles into a std::vector<occtl_point2_t>.
Definition curves2d.hpp:333
occtl_vector2_t eval_dn(const double theU, const int32_t theN) const
Returns the N-th derivative vector at theU.
Definition curves2d.hpp:710
static Curve2d from_circle(occtl_graph_t *graph, const occtl_geom2d_circle_t &theCircle)
Constructs a 2D curve from a circle.
Definition curves2d.hpp:408
occtl_geom2d_line_t as_line() const
Extracts the underlying line.
Definition curves2d.hpp:204
OffsetView as_offset() const
Extracts the scalar offset of an offset curve.
Definition curves2d.hpp:741
std::vector< int32_t > bspline_multiplicities() const
Copies all knot multiplicities into a std::vector<int32_t>.
Definition curves2d.hpp:355
static Curve2d from_bezier(occtl_graph_t *graph, const occtl_curve2d_bezier_create_info_t &theInfo)
Constructs a 2D Bezier curve from the given create info.
Definition curves2d.hpp:635
static Curve2d from_offset(occtl_graph_t *graph, const occtl_curve2d_offset_create_info_t &theInfo)
Constructs an offset 2D curve.
Definition curves2d.hpp:655
occtl_geom2d_circle_t as_circle() const
Extracts the underlying circle.
Definition curves2d.hpp:213
static std::vector< occtl_geom2d_circle_t > circles_tangent_on_curve_radius(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_on_curve_radius_info_t *theInfo)
Computes fixed-radius 2D circles tangent to a curve with center on another curve.
Definition curves2d.hpp:577
std::vector< double > bspline_knots() const
Copies all distinct knot values into a std::vector<double>.
Definition curves2d.hpp:344
static Curve2d from_bspline(occtl_graph_t *graph, const occtl_curve2d_bspline_create_info_t &theInfo)
Constructs a 2D B-spline curve from the given create info.
Definition curves2d.hpp:625
std::tuple< occtl_point2_t, occtl_vector2_t, occtl_vector2_t, occtl_vector2_t > eval_d3(const double theU) const
Evaluates point, first, second, and third derivatives at theU.
Definition curves2d.hpp:699
static Curve2d from_line(occtl_graph_t *graph, const occtl_geom2d_line_t &theLine)
Constructs a 2D curve from a line.
Definition curves2d.hpp:399
Curve2d(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 curves2d.hpp:59
int32_t bezier_degree() const
Returns the Bezier polynomial degree.
Definition curves2d.hpp:306
double parameter_of_point(const Point2 &thePoint) const
Returns the parameter on the 2D curve nearest to a given point.
Definition curves2d.hpp:152
static std::vector< occtl_geom2d_circle_t > circles_tangent_to_two_radius(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_to_two_radius_info_t &theInfo)
Computes all fixed-radius circles tangent to two 2D curves.
Definition curves2d.hpp:417
size_t bspline_knot_count() const
Returns the number of distinct knot values.
Definition curves2d.hpp:288
int32_t is_closed() const
Returns 1 when the curve is closed, 0 otherwise.
Definition curves2d.hpp:179
static std::vector< occtl_geom2d_line_t > lines_tangent_with_angle(occtl_graph_t *graph, const occtl_curve2d_line_tangent_with_angle_info_t *theInfo)
Computes all 2D lines tangent to a curve at a fixed angle to a line.
Definition curves2d.hpp:496
size_t bezier_pole_count() const
Returns the number of Bezier poles.
Definition curves2d.hpp:315
static std::vector< occtl_geom2d_circle_t > circles_tangent_to_three(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_to_three_info_t &theInfo)
Computes all 2D circles tangent to three 2D curves.
Definition curves2d.hpp:516
occtl_point2_t eval_d0(const double theU) const
Evaluates the 2D curve point at parameter theU.
Definition curves2d.hpp:670
size_t bspline_pole_count() const
Returns the number of poles.
Definition curves2d.hpp:279
occtl_graph_t * graph() const noexcept
Borrows it — returns the graph pointer.
Definition curves2d.hpp:69
occtl_geom2d_ellipse_t as_ellipse() const
Extracts the underlying ellipse.
Definition curves2d.hpp:222
occtl_curve_kind_t kind() const
Returns the kind of geometry.
Definition curves2d.hpp:161
std::pair< occtl_point2_t, occtl_vector2_t > eval_d1(const double theU) const
Evaluates point and first derivative at theU.
Definition curves2d.hpp:679
Curve2d rotated(double theAngle) const
Returns a rotated copy of this curve stored in the same graph.
Definition curves2d.hpp:114
occtl_geom_continuity_t continuity() const
Returns the geometric continuity class.
Definition curves2d.hpp:188
const occtl_point2_t * bspline_poles_view(size_t &theCount) const
Returns a zero-copy view of the poles array.
Definition curves2d.hpp:390
static std::vector< occtl_geom2d_circle_t > circles_tangent_center_on_curve(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_center_on_curve_info_t *theInfo)
Computes all 2D circles tangent to two curves with center on a curve.
Definition curves2d.hpp:556
static Curve2d from_trimmed(occtl_graph_t *graph, const occtl_curve_trimmed_create_info_t &theInfo)
Constructs a trimmed 2D curve.
Definition curves2d.hpp:645
int32_t bspline_degree() const
Returns the polynomial degree.
Definition curves2d.hpp:270
static std::vector< occtl_geom2d_circle_t > circles_tangent_fixed_center(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_fixed_center_info_t &theInfo)
Computes all 2D circles tangent to a curve with a fixed center.
Definition curves2d.hpp:536
occtl_geom2d_parabola_t as_parabola() const
Extracts the underlying parabola.
Definition curves2d.hpp:240
int32_t bspline_is_rational() const
Returns 1 when the B-spline is rational (NURBS), 0 otherwise.
Definition curves2d.hpp:297
std::vector< double > bspline_weights() const
Copies all weights into a std::vector<double>.
Definition curves2d.hpp:366
static Curve2d from_hyperbola(occtl_graph_t *graph, const occtl_geom2d_hyperbola_t &theHyperbola)
Constructs a 2D curve from a hyperbola.
Definition curves2d.hpp:607
Curve2d reversed() const
Returns a reversed copy of this curve stored in the same graph.
Definition curves2d.hpp:76
std::vector< Curve2d > to_bezier_segments(const occtl_curve_bezier_segments_options_t *theOptions=nullptr) const
Decomposes this 2D curve into adjacent Bezier curve segments.
Definition curves2d.hpp:818
static std::vector< occtl_geom2d_line_t > lines_tangent_through_point(occtl_graph_t *graph, const occtl_curve2d_line_tangent_through_point_info_t &theInfo)
Computes all 2D lines tangent to a 2D curve through a point.
Definition curves2d.hpp:476
void parameter_range(double &theUMin, double &theUMax) const
Returns the parameter range [u_min, u_max] via out-parameters.
Definition curves2d.hpp:197
static Curve2d from_parabola(occtl_graph_t *graph, const occtl_geom2d_parabola_t &theParabola)
Constructs a 2D curve from a parabola.
Definition curves2d.hpp:616
occtl_rep_id_t id() const noexcept
Returns the representation id.
Definition curves2d.hpp:72
std::pair< double, double > project_point(const Point2 &thePoint) const
Projects a 2D point onto the curve.
Definition curves2d.hpp:142
std::tuple< occtl_point2_t, occtl_vector2_t, occtl_vector2_t > eval_d2(const double theU) const
Evaluates point, first, and second derivatives at theU.
Definition curves2d.hpp:689
occtl_geom2d_hyperbola_t as_hyperbola() const
Extracts the underlying hyperbola.
Definition curves2d.hpp:231
BSplineView as_bspline() const
Returns a §10.5 aggregate inspection view of a 2D B-spline curve.
Definition curves2d.hpp:810
static Curve2d from_ellipse(occtl_graph_t *graph, const occtl_geom2d_ellipse_t &theEllipse)
Constructs a 2D curve from an ellipse.
Definition curves2d.hpp:598
TrimmedView as_trimmed() const
Extracts the parameter bounds from a trimmed curve.
Definition curves2d.hpp:733
Curve2d scaled(const Point2 &theOrigin, double theFactor) const
Returns a scaled copy of this curve stored in the same graph.
Definition curves2d.hpp:123
static std::vector< Curve2d > blend_arcs(occtl_graph_t *graph, const occtl_curve2d_blend_arc_info_t &theInfo)
Computes all fixed-radius 2D blend arcs tangent to two 2D curves.
Definition curves2d.hpp:438
Curve2d translated(const Vector2 &theDelta) const
Returns a translated copy of this curve stored in the same graph.
Definition curves2d.hpp:105
int32_t is_periodic() const
Returns 1 when the curve is periodic, 0 otherwise.
Definition curves2d.hpp:170
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 the geom module.
OCCT-Light: 2D curve (pcurve) API on BRepGraph.
occtl_status_t occtl_curve2d_eval_d1(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double u, occtl_point2_t *out_point, occtl_vector2_t *out_d1)
occtl_status_t occtl_curve2d_transformed(occtl_graph_t *graph, occtl_rep_id_t curve_id, double translate_x, double translate_y, double rotate_angle, double scale_x, double scale_y, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_bspline_knot_count(const occtl_graph_t *graph, occtl_rep_id_t curve_id, size_t *out_count)
occtl_status_t occtl_curve2d_bspline_poles(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_point2_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_curve2d_is_closed(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_is_closed)
occtl_status_t occtl_curve2d_bspline_flat_knots(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_curve2d_create_tangent_circle_to_three(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_to_three_info_t *info, size_t solution_index, occtl_geom2d_circle_t *out_circle, size_t *out_count)
occtl_status_t occtl_curve2d_length(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_length)
occtl_status_t occtl_curve2d_as_ellipse(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_geom2d_ellipse_t *out_ellipse)
occtl_status_t occtl_curve2d_create_tangent_line_through_point(occtl_graph_t *graph, const occtl_curve2d_line_tangent_through_point_info_t *info, size_t solution_index, occtl_geom2d_line_t *out_line, size_t *out_count)
occtl_status_t occtl_curve2d_is_periodic(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_is_periodic)
occtl_status_t occtl_curve2d_create_tangent_circle_to_two_radius(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_to_two_radius_info_t *info, size_t solution_index, occtl_geom2d_circle_t *out_circle, size_t *out_count)
occtl_status_t occtl_curve2d_bspline_pole_count(const occtl_graph_t *graph, occtl_rep_id_t curve_id, size_t *out_count)
occtl_status_t occtl_curve2d_bezier_is_rational(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_is_rational)
occtl_status_t occtl_curve2d_as_parabola(occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_geom2d_parabola_t *out_parabola)
occtl_status_t occtl_curve2d_as_circle(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_geom2d_circle_t *out_circle)
occtl_status_t occtl_curve2d_reverse(occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_create_hyperbola(occtl_graph_t *graph, occtl_geom2d_hyperbola_t hyperbola, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_create_parabola(occtl_graph_t *graph, occtl_geom2d_parabola_t parabola, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_as_line(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_geom2d_line_t *out_line)
occtl_status_t occtl_curve2d_bspline_weights(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_curve2d_as_hyperbola(occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_geom2d_hyperbola_t *out_hyperbola)
occtl_status_t occtl_curve2d_bspline_is_rational(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_is_rational)
occtl_status_t occtl_curve2d_create_tangent_circle_on_curve_radius(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_on_curve_radius_info_t *info, size_t solution_index, occtl_geom2d_circle_t *out_circle, size_t *out_count)
occtl_status_t occtl_curve2d_create_bspline(occtl_graph_t *graph, const occtl_curve2d_bspline_create_info_t *info, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_parameter_range(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_u_min, double *out_u_max)
occtl_status_t occtl_curve2d_as_bspline(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_curve2d_bspline_t *out)
occtl_status_t occtl_curve2d_create_blend_arc(occtl_graph_t *graph, const occtl_curve2d_blend_arc_info_t *info, size_t solution_index, occtl_rep_id_t *out_id, size_t *out_count)
occtl_status_t occtl_curve2d_as_offset(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_offset)
occtl_status_t occtl_curve2d_to_bezier_segments(occtl_graph_t *graph, occtl_rep_id_t curve_id, const occtl_curve_bezier_segments_options_t *options, occtl_rep_id_t **out_segments, size_t *out_count)
occtl_status_t occtl_curve2d_create_circle(occtl_graph_t *graph, occtl_geom2d_circle_t circle, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_kind(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_curve_kind_t *out_kind)
occtl_status_t occtl_curve2d_create_ellipse(occtl_graph_t *graph, occtl_geom2d_ellipse_t ellipse, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_continuity(occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_geom_continuity_t *out_continuity)
occtl_status_t occtl_curve2d_create_line(occtl_graph_t *graph, occtl_geom2d_line_t line, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_translated(occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_vector2_t delta, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_eval_d2(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double u, occtl_point2_t *out_point, occtl_vector2_t *out_d1, occtl_vector2_t *out_d2)
occtl_status_t occtl_curve2d_bezier_pole_count(const occtl_graph_t *graph, occtl_rep_id_t curve_id, size_t *out_count)
occtl_status_t occtl_curve2d_scaled(occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_point2_t origin, double factor, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_create_tangent_line_to_two(occtl_graph_t *graph, const occtl_curve2d_line_tangent_to_two_info_t *info, size_t solution_index, occtl_geom2d_line_t *out_line, size_t *out_count)
occtl_status_t occtl_curve2d_project_point(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_point2_t point, double *out_param, double *out_distance)
occtl_status_t occtl_curve2d_bspline_degree(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_degree)
occtl_status_t occtl_curve2d_rotated(occtl_graph_t *graph, occtl_rep_id_t curve_id, double angle, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_bspline_knots(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_curve2d_eval_dn(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double u, int32_t n, occtl_vector2_t *out_derivative)
occtl_status_t occtl_curve2d_bspline_multiplicities(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_curve2d_as_trimmed(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double *out_u_first, double *out_u_last)
occtl_status_t occtl_curve2d_bezier_degree(const occtl_graph_t *graph, occtl_rep_id_t curve_id, int32_t *out_degree)
occtl_status_t occtl_curve2d_create_trimmed(occtl_graph_t *graph, const occtl_curve_trimmed_create_info_t *info, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_eval_d0(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double u, occtl_point2_t *out_point)
occtl_status_t occtl_curve2d_parameter_of_point(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_point2_t point, double *out_param)
occtl_status_t occtl_curve2d_eval_d3(const occtl_graph_t *graph, occtl_rep_id_t curve_id, double u, occtl_point2_t *out_point, occtl_vector2_t *out_d1, occtl_vector2_t *out_d2, occtl_vector2_t *out_d3)
occtl_status_t occtl_curve2d_bspline_poles_view(occtl_graph_t *graph, occtl_rep_id_t curve_id, const occtl_point2_t **out_data, size_t *out_count)
occtl_status_t occtl_curve2d_create_tangent_line_with_angle(occtl_graph_t *graph, const occtl_curve2d_line_tangent_with_angle_info_t *info, size_t solution_index, occtl_geom2d_line_t *out_line, size_t *out_count)
occtl_status_t occtl_curve2d_create_tangent_circle_fixed_center(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_fixed_center_info_t *info, size_t solution_index, occtl_geom2d_circle_t *out_circle, size_t *out_count)
occtl_status_t occtl_curve2d_create_tangent_circle_center_on_curve(occtl_graph_t *graph, const occtl_curve2d_circle_tangent_center_on_curve_info_t *info, size_t solution_index, occtl_geom2d_circle_t *out_circle, size_t *out_count)
occtl_status_t occtl_curve2d_create_bezier(occtl_graph_t *graph, const occtl_curve2d_bezier_create_info_t *info, occtl_rep_id_t *out_id)
occtl_status_t occtl_curve2d_create_offset(occtl_graph_t *graph, const occtl_curve2d_offset_create_info_t *info, occtl_rep_id_t *out_id)
enum occtl_curve2d_tangency_qualifier occtl_curve2d_tangency_qualifier_t
enum occtl_curve_kind occtl_curve_kind_t
enum occtl_geom_continuity occtl_geom_continuity_t
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Aggregate inspection view of a 2D B-spline curve (§10.5).
Definition curves2d.hpp:755
Definition curves2d.hpp:729
Definition curves2d.hpp:723
2D point value type. Mirrors occtl_point2_t with STL-flavoured access.
Definition geom.hpp:38
const occtl_point2_t & c_type() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition geom.hpp:58
2D free-vector value type. Mirrors occtl_vector2_t.
Definition geom.hpp:128
const occtl_vector2_t & c_type() const noexcept
Borrows-it view of the underlying C value type.
Definition geom.hpp:148
Definition occtl_curves2d.h:867
Definition occtl_curves2d.h:93
Definition occtl_curves2d.h:812
Definition occtl_curves2d.h:1667
const occtl_point2_t * poles
Definition occtl_curves2d.h:1684
const double * flat_knots
Definition occtl_curves2d.h:1689
const int32_t * multiplicities
Definition occtl_curves2d.h:1688
const double * weights
Definition occtl_curves2d.h:1685
int32_t is_periodic
Definition occtl_curves2d.h:1673
size_t knot_count
Definition occtl_curves2d.h:1677
int32_t is_rational
Definition occtl_curves2d.h:1672
size_t pole_count
Definition occtl_curves2d.h:1676
const double * knots
Definition occtl_curves2d.h:1687
size_t flat_knot_count
Definition occtl_curves2d.h:1678
int32_t degree
Definition occtl_curves2d.h:1671
int32_t continuity
Definition occtl_curves2d.h:1675
int32_t is_closed
Definition occtl_curves2d.h:1674
Definition occtl_curves2d.h:330
Definition occtl_curves2d.h:294
Definition occtl_curves2d.h:378
Definition occtl_curves2d.h:247
Definition occtl_curves2d.h:53
Definition occtl_curves2d.h:170
Definition occtl_curves2d.h:133
Definition occtl_curves2d.h:205
Definition occtl_curves2d.h:941
Definition occtl_curves_common.h:119
Definition occtl_curves_common.h:86
Definition occtl_geom.h:874
Definition occtl_geom.h:885
Definition occtl_geom.h:895
Definition occtl_geom.h:866
Definition occtl_geom.h:905
Definition occtl_geom.h:49
Definition occtl_core.h:251
uint64_t bits
Definition occtl_core.h:252
Definition occtl_geom.h:56