OCCT-Light 0.1
C ABI and C++ veneer for multi-language CAD workflows
Loading...
Searching...
No Matches
occtl_curves2d.h
Go to the documentation of this file.
1// Copyright (c) 2026 Capgemini Engineering Research and Development.
2//
3// This file is part of OCCT-Light software library.
4//
5// This library is free software; you can redistribute it and/or modify it under
6// the terms of the GNU Affero General Public License version 3 as published
7// by the Free Software Foundation, with an option to use any later version.
8// Consult the file LICENSE_AGPL_30.txt included in OCCT-Light distribution
9// for complete text of the license and disclaimer of any warranty.
10//
11// Alternatively, this file may be used under the terms of a commercial
12// license or contractual agreement.
13//
14// SPDX-License-Identifier: AGPL-3.0-or-later
15
29#ifndef OCCTL_CURVES2D_H
30#define OCCTL_CURVES2D_H
31
32#include <stddef.h>
33#include <stdint.h>
34
35#include "occtl_core.h"
36#include "occtl_curves_common.h"
37#include "occtl_geom.h"
38
39#ifdef __cplusplus
40extern "C"
41{
42#endif
43
45typedef struct occtl_graph occtl_graph_t;
46
64
65#define OCCTL_CURVE2D_CIRCLE_TANGENT_TO_TWO_RADIUS_INFO_VERSION_1 1u
66
67#define OCCTL_CURVE2D_CIRCLE_TANGENT_TO_TWO_RADIUS_INFO_INIT \
68 {OCCTL_CURVE2D_CIRCLE_TANGENT_TO_TWO_RADIUS_INFO_VERSION_1, \
69 NULL, \
70 {0}, \
71 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
72 {0}, \
73 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
74 0.0, \
75 1.0e-9}
76
88
104
105#define OCCTL_CURVE2D_BLEND_ARC_INFO_VERSION_1 1u
106
107#define OCCTL_CURVE2D_BLEND_ARC_INFO_INIT \
108 {OCCTL_CURVE2D_BLEND_ARC_INFO_VERSION_1, \
109 NULL, \
110 {0}, \
111 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
112 {0}, \
113 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
114 0.0, \
115 0, \
116 1.0e-9}
117
128
142
143#define OCCTL_CURVE2D_LINE_TANGENT_TO_TWO_INFO_VERSION_1 1u
144
145#define OCCTL_CURVE2D_LINE_TANGENT_TO_TWO_INFO_INIT \
146 {OCCTL_CURVE2D_LINE_TANGENT_TO_TWO_INFO_VERSION_1, \
147 NULL, \
148 {0}, \
149 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
150 {0}, \
151 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
152 1.0e-9}
153
163OCCTL_API void OCCTL_CALL
165
178
179#define OCCTL_CURVE2D_LINE_TANGENT_THROUGH_POINT_INFO_VERSION_1 1u
180
181#define OCCTL_CURVE2D_LINE_TANGENT_THROUGH_POINT_INFO_INIT \
182 {OCCTL_CURVE2D_LINE_TANGENT_THROUGH_POINT_INFO_VERSION_1, \
183 NULL, \
184 {0}, \
185 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
186 {0.0, 0.0}, \
187 1.0e-9}
188
200
217
218#define OCCTL_CURVE2D_LINE_TANGENT_WITH_ANGLE_INFO_VERSION_1 1u
219
220#define OCCTL_CURVE2D_LINE_TANGENT_WITH_ANGLE_INFO_INIT \
221 {OCCTL_CURVE2D_LINE_TANGENT_WITH_ANGLE_INFO_VERSION_1, \
222 NULL, \
223 {0}, \
224 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
225 {{{0.0, 0.0}, {1.0, 0.0}}}, \
226 0.0, \
227 0, \
228 0.0, \
229 1.0e-9}
230
242
261
262#define OCCTL_CURVE2D_CIRCLE_TANGENT_TO_THREE_INFO_VERSION_1 1u
263
264#define OCCTL_CURVE2D_CIRCLE_TANGENT_TO_THREE_INFO_INIT \
265 {OCCTL_CURVE2D_CIRCLE_TANGENT_TO_THREE_INFO_VERSION_1, \
266 NULL, \
267 {0}, \
268 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
269 {0}, \
270 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
271 {0}, \
272 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
273 0.0, \
274 0.0, \
275 0.0, \
276 1.0e-9}
277
289
303
304#define OCCTL_CURVE2D_CIRCLE_TANGENT_FIXED_CENTER_INFO_VERSION_1 1u
305
306#define OCCTL_CURVE2D_CIRCLE_TANGENT_FIXED_CENTER_INFO_INIT \
307 {OCCTL_CURVE2D_CIRCLE_TANGENT_FIXED_CENTER_INFO_VERSION_1, \
308 NULL, \
309 {0}, \
310 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
311 {0.0, 0.0}, \
312 1.0e-9}
313
325
345
346#define OCCTL_CURVE2D_CIRCLE_TANGENT_CENTER_ON_CURVE_INFO_VERSION_1 1u
347
348#define OCCTL_CURVE2D_CIRCLE_TANGENT_CENTER_ON_CURVE_INFO_INIT \
349 {OCCTL_CURVE2D_CIRCLE_TANGENT_CENTER_ON_CURVE_INFO_VERSION_1, \
350 NULL, \
351 {0}, \
352 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
353 {0}, \
354 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
355 {0}, \
356 0.0, \
357 0.0, \
358 0.0, \
359 1.0e-9}
360
372
388
389#define OCCTL_CURVE2D_CIRCLE_TANGENT_ON_CURVE_RADIUS_INFO_VERSION_1 1u
390
391#define OCCTL_CURVE2D_CIRCLE_TANGENT_ON_CURVE_RADIUS_INFO_INIT \
392 {OCCTL_CURVE2D_CIRCLE_TANGENT_ON_CURVE_RADIUS_INFO_VERSION_1, \
393 NULL, \
394 {0}, \
395 OCCTL_GEOM_TANGENCY_UNQUALIFIED, \
396 {0}, \
397 0.0, \
398 1.0e-9}
399
411
439 occtl_graph_t* graph,
441 size_t solution_index,
442 occtl_geom2d_circle_t* out_circle,
443 size_t* out_count);
444
473OCCTL_API occtl_status_t OCCTL_CALL
476 size_t solution_index,
477 occtl_rep_id_t* out_id,
478 size_t* out_count);
479
506OCCTL_API occtl_status_t OCCTL_CALL
509 size_t solution_index,
510 occtl_geom2d_line_t* out_line,
511 size_t* out_count);
512
540 occtl_graph_t* graph,
542 size_t solution_index,
543 occtl_geom2d_line_t* out_line,
544 size_t* out_count);
545
574 occtl_graph_t* graph,
576 size_t solution_index,
577 occtl_geom2d_line_t* out_line,
578 size_t* out_count);
579
607 occtl_graph_t* graph,
609 size_t solution_index,
610 occtl_geom2d_circle_t* out_circle,
611 size_t* out_count);
612
640 occtl_graph_t* graph,
642 size_t solution_index,
643 occtl_geom2d_circle_t* out_circle,
644 size_t* out_count);
645
673 occtl_graph_t* graph,
675 size_t solution_index,
676 occtl_geom2d_circle_t* out_circle,
677 size_t* out_count);
678
708 occtl_graph_t* graph,
710 size_t solution_index,
711 occtl_geom2d_circle_t* out_circle,
712 size_t* out_count);
713
729 occtl_rep_id_t* out_id);
730
747 occtl_rep_id_t* out_id);
748
765 occtl_rep_id_t* out_id);
766
782OCCTL_API occtl_status_t OCCTL_CALL
784 occtl_geom2d_hyperbola_t hyperbola,
785 occtl_rep_id_t* out_id);
786
804 occtl_rep_id_t* out_id);
805
812{
813 uint32_t struct_version;
814 const void* p_next;
816 size_t pole_count;
817 const double* weights;
818 const double* knots;
819 const int32_t* multiplicities;
820 size_t knot_count;
821 int32_t degree;
822 int32_t is_periodic;
824
825#define OCCTL_CURVE2D_BSPLINE_CREATE_INFO_VERSION_1 1u
826
827#define OCCTL_CURVE2D_BSPLINE_CREATE_INFO_INIT \
828 {OCCTL_CURVE2D_BSPLINE_CREATE_INFO_VERSION_1, NULL, NULL, 0, NULL, NULL, NULL, 0, 0, 0}
829
839OCCTL_API void OCCTL_CALL
841
858OCCTL_API occtl_status_t OCCTL_CALL
861 occtl_rep_id_t* out_id);
862
867{
868 uint32_t struct_version;
869 const void* p_next;
870 const occtl_point2_t* poles;
871 size_t pole_count;
872 const double* weights;
874
875#define OCCTL_CURVE2D_BEZIER_CREATE_INFO_VERSION_1 1u
876
877#define OCCTL_CURVE2D_BEZIER_CREATE_INFO_INIT \
878 {OCCTL_CURVE2D_BEZIER_CREATE_INFO_VERSION_1, NULL, NULL, 0, NULL}
879
889OCCTL_API void OCCTL_CALL
891
908OCCTL_API occtl_status_t OCCTL_CALL
911 occtl_rep_id_t* out_id);
912
929OCCTL_API occtl_status_t OCCTL_CALL
932 occtl_rep_id_t* out_id);
933
947
948#define OCCTL_CURVE2D_OFFSET_CREATE_INFO_VERSION_1 1u
949
950#define OCCTL_CURVE2D_OFFSET_CREATE_INFO_INIT \
951 {OCCTL_CURVE2D_OFFSET_CREATE_INFO_VERSION_1, NULL, {0}, 0.0}
952
962OCCTL_API void OCCTL_CALL
964
981OCCTL_API occtl_status_t OCCTL_CALL
984 occtl_rep_id_t* out_id);
985
1004 occtl_rep_id_t curve_id,
1005 occtl_rep_id_t* out_id);
1006
1029 occtl_rep_id_t curve_id,
1030 double translate_x,
1031 double translate_y,
1032 double rotate_angle,
1033 double scale_x,
1034 double scale_y,
1035 occtl_rep_id_t* out_id);
1036
1053 occtl_rep_id_t curve_id,
1054 occtl_vector2_t delta,
1055 occtl_rep_id_t* out_id);
1056
1073 occtl_rep_id_t curve_id,
1074 double angle,
1075 occtl_rep_id_t* out_id);
1076
1095 occtl_rep_id_t curve_id,
1096 occtl_point2_t origin,
1097 double factor,
1098 occtl_rep_id_t* out_id);
1099
1113 occtl_rep_id_t curve_id,
1114 double* out_length);
1115
1131 occtl_rep_id_t curve_id,
1132 occtl_point2_t point,
1133 double* out_param,
1134 double* out_distance);
1135
1153 occtl_rep_id_t curve_id,
1154 occtl_point2_t point,
1155 double* out_param);
1156
1172 occtl_rep_id_t curve_id,
1173 occtl_curve_kind_t* out_kind);
1174
1189 occtl_rep_id_t curve_id,
1190 int32_t* out_is_periodic);
1191
1212 occtl_rep_id_t curve_id,
1213 int32_t* out_is_closed);
1214
1227OCCTL_API occtl_status_t OCCTL_CALL
1229 occtl_rep_id_t curve_id,
1230 occtl_geom_continuity_t* out_continuity);
1231
1251 occtl_rep_id_t curve_id,
1252 double* out_u_min,
1253 double* out_u_max);
1254
1271 occtl_rep_id_t curve_id,
1272 occtl_geom2d_line_t* out_line);
1273
1290 occtl_rep_id_t curve_id,
1291 occtl_geom2d_circle_t* out_circle);
1292
1309 occtl_rep_id_t curve_id,
1310 occtl_geom2d_ellipse_t* out_ellipse);
1311
1327OCCTL_API occtl_status_t OCCTL_CALL
1329 occtl_rep_id_t curve_id,
1330 occtl_geom2d_hyperbola_t* out_hyperbola);
1331
1347OCCTL_API occtl_status_t OCCTL_CALL
1349 occtl_rep_id_t curve_id,
1350 occtl_geom2d_parabola_t* out_parabola);
1351
1369 occtl_rep_id_t curve_id,
1370 double* out_u_first,
1371 double* out_u_last);
1372
1389 occtl_rep_id_t curve_id,
1390 double* out_offset);
1391
1406 occtl_rep_id_t curve_id,
1407 int32_t* out_degree);
1408
1423 occtl_rep_id_t curve_id,
1424 size_t* out_count);
1425
1440 occtl_rep_id_t curve_id,
1441 size_t* out_count);
1442
1458 occtl_rep_id_t curve_id,
1459 int32_t* out_is_rational);
1460
1478 occtl_rep_id_t curve_id,
1479 int32_t* out_degree);
1480
1495 occtl_rep_id_t curve_id,
1496 size_t* out_count);
1497
1513 occtl_rep_id_t curve_id,
1514 int32_t* out_is_rational);
1515
1533 occtl_rep_id_t curve_id,
1534 occtl_point2_t* out_buf,
1535 size_t capacity,
1536 size_t* out_count);
1537
1555 occtl_rep_id_t curve_id,
1556 double* out_buf,
1557 size_t capacity,
1558 size_t* out_count);
1559
1577 occtl_rep_id_t curve_id,
1578 int32_t* out_buf,
1579 size_t capacity,
1580 size_t* out_count);
1581
1599 occtl_rep_id_t curve_id,
1600 double* out_buf,
1601 size_t capacity,
1602 size_t* out_count);
1603
1621 occtl_rep_id_t curve_id,
1622 double* out_buf,
1623 size_t capacity,
1624 size_t* out_count);
1625
1644OCCTL_API occtl_status_t OCCTL_CALL
1646 occtl_rep_id_t curve_id,
1647 const occtl_point2_t** out_data,
1648 size_t* out_count);
1649
1667{
1669 const void* p_next;
1671 int32_t degree;
1672 int32_t is_rational;
1673 int32_t is_periodic;
1674 int32_t is_closed;
1675 int32_t continuity;
1676 size_t pole_count;
1677 size_t knot_count;
1685 const double* weights;
1687 const double* knots;
1688 const int32_t* multiplicities;
1689 const double* flat_knots;
1691
1692#define OCCTL_CURVE2D_BSPLINE_VERSION_1 1u
1693
1694#define OCCTL_CURVE2D_BSPLINE_INIT \
1695 {OCCTL_CURVE2D_BSPLINE_VERSION_1, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL}
1696
1707
1733 occtl_rep_id_t curve_id,
1735
1765OCCTL_API occtl_status_t OCCTL_CALL
1767 occtl_rep_id_t curve_id,
1769 occtl_rep_id_t** out_segments,
1770 size_t* out_count);
1771
1784
1802 occtl_rep_id_t curve_id,
1803 double u,
1804 occtl_point2_t* out_point);
1805
1824 occtl_rep_id_t curve_id,
1825 double u,
1826 occtl_point2_t* out_point,
1827 occtl_vector2_t* out_d1);
1828
1848 occtl_rep_id_t curve_id,
1849 double u,
1850 occtl_point2_t* out_point,
1851 occtl_vector2_t* out_d1,
1852 occtl_vector2_t* out_d2);
1853
1874 occtl_rep_id_t curve_id,
1875 double u,
1876 occtl_point2_t* out_point,
1877 occtl_vector2_t* out_d1,
1878 occtl_vector2_t* out_d2,
1879 occtl_vector2_t* out_d3);
1880
1901 occtl_rep_id_t curve_id,
1902 double u,
1903 int32_t n,
1904 occtl_vector2_t* out_derivative);
1905
1906#ifdef __cplusplus
1907} /* extern "C" */
1908#endif
1909
1910#endif /* OCCTL_CURVES2D_H */
OCCT-Light: core public API.
#define OCCTL_API
Definition occtl_core.h:111
enum occtl_status occtl_status_t
void occtl_curve2d_bspline_init(occtl_curve2d_bspline_t *out)
void occtl_curve2d_offset_create_info_init(occtl_curve2d_offset_create_info_t *info)
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)
void occtl_curve2d_circle_tangent_to_three_info_init(occtl_curve2d_circle_tangent_to_three_info_t *info)
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)
struct occtl_curve2d_bezier_create_info occtl_curve2d_bezier_create_info_t
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)
struct occtl_curve2d_circle_tangent_center_on_curve_info occtl_curve2d_circle_tangent_center_on_curve_info_t
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)
void occtl_curve2d_circle_tangent_center_on_curve_info_init(occtl_curve2d_circle_tangent_center_on_curve_info_t *info)
struct occtl_curve2d_line_tangent_to_two_info occtl_curve2d_line_tangent_to_two_info_t
occtl_status_t occtl_curve2d_bspline_pole_count(const occtl_graph_t *graph, occtl_rep_id_t curve_id, size_t *out_count)
struct occtl_curve2d_circle_tangent_to_two_radius_info occtl_curve2d_circle_tangent_to_two_radius_info_t
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)
void occtl_curve2d_free_bezier_segments(occtl_rep_id_t *ids)
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)
void occtl_curve2d_line_tangent_with_angle_info_init(occtl_curve2d_line_tangent_with_angle_info_t *info)
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)
void occtl_curve2d_circle_tangent_fixed_center_info_init(occtl_curve2d_circle_tangent_fixed_center_info_t *info)
occtl_status_t occtl_curve2d_as_bspline(const occtl_graph_t *graph, occtl_rep_id_t curve_id, occtl_curve2d_bspline_t *out)
struct occtl_curve2d_circle_tangent_on_curve_radius_info occtl_curve2d_circle_tangent_on_curve_radius_info_t
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)
struct occtl_curve2d_offset_create_info occtl_curve2d_offset_create_info_t
struct occtl_curve2d_circle_tangent_fixed_center_info occtl_curve2d_circle_tangent_fixed_center_info_t
struct occtl_curve2d_line_tangent_through_point_info occtl_curve2d_line_tangent_through_point_info_t
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)
void occtl_curve2d_line_tangent_through_point_info_init(occtl_curve2d_line_tangent_through_point_info_t *info)
void occtl_curve2d_bspline_create_info_init(occtl_curve2d_bspline_create_info_t *info)
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)
void occtl_curve2d_bezier_create_info_init(occtl_curve2d_bezier_create_info_t *info)
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)
void occtl_curve2d_blend_arc_info_init(occtl_curve2d_blend_arc_info_t *info)
struct occtl_curve2d_blend_arc_info occtl_curve2d_blend_arc_info_t
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)
void occtl_curve2d_line_tangent_to_two_info_init(occtl_curve2d_line_tangent_to_two_info_t *info)
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)
struct occtl_curve2d_bspline_create_info occtl_curve2d_bspline_create_info_t
void occtl_curve2d_circle_tangent_to_two_radius_info_init(occtl_curve2d_circle_tangent_to_two_radius_info_t *info)
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)
struct occtl_curve2d_line_tangent_with_angle_info occtl_curve2d_line_tangent_with_angle_info_t
struct occtl_curve2d_bspline occtl_curve2d_bspline_t
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)
void occtl_curve2d_circle_tangent_on_curve_radius_info_init(occtl_curve2d_circle_tangent_on_curve_radius_info_t *info)
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)
struct occtl_curve2d_circle_tangent_to_three_info occtl_curve2d_circle_tangent_to_three_info_t
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)
OCCT-Light: Types shared by 3D and 2D curve APIs.
enum occtl_curve2d_tangency_qualifier occtl_curve2d_tangency_qualifier_t
enum occtl_curve_kind occtl_curve_kind_t
OCCT-Light: geometry primitive types and math utilities.
enum occtl_geom_continuity occtl_geom_continuity_t
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Definition occtl_curves2d.h:867
const double * weights
Definition occtl_curves2d.h:872
uint32_t struct_version
Definition occtl_curves2d.h:868
const void * p_next
Definition occtl_curves2d.h:869
Definition occtl_curves2d.h:93
int32_t long_arc
Definition occtl_curves2d.h:101
double radius
Definition occtl_curves2d.h:100
occtl_curve2d_tangency_qualifier_t qualifier_b
Definition occtl_curves2d.h:99
uint32_t struct_version
Definition occtl_curves2d.h:94
occtl_rep_id_t curve_a
Definition occtl_curves2d.h:96
double tolerance
Definition occtl_curves2d.h:102
occtl_curve2d_tangency_qualifier_t qualifier_a
Definition occtl_curves2d.h:97
const void * p_next
Definition occtl_curves2d.h:95
occtl_rep_id_t curve_b
Definition occtl_curves2d.h:98
Definition occtl_curves2d.h:812
const int32_t * multiplicities
Definition occtl_curves2d.h:819
const occtl_point2_t * poles
Definition occtl_curves2d.h:815
const void * p_next
Definition occtl_curves2d.h:814
uint32_t struct_version
Definition occtl_curves2d.h:813
const double * weights
Definition occtl_curves2d.h:817
const double * knots
Definition occtl_curves2d.h:818
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
uint32_t struct_version
Definition occtl_curves2d.h:1668
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
const void * p_next
Definition occtl_curves2d.h:1669
int32_t is_closed
Definition occtl_curves2d.h:1674
double initial_parameter_a
Definition occtl_curves2d.h:339
occtl_rep_id_t curve_a
Definition occtl_curves2d.h:334
double initial_parameter_center
Definition occtl_curves2d.h:341
occtl_rep_id_t center_curve
Definition occtl_curves2d.h:338
occtl_curve2d_tangency_qualifier_t qualifier_b
Definition occtl_curves2d.h:337
double initial_parameter_b
Definition occtl_curves2d.h:340
const void * p_next
Definition occtl_curves2d.h:333
double tolerance
Definition occtl_curves2d.h:343
uint32_t struct_version
Definition occtl_curves2d.h:332
occtl_curve2d_tangency_qualifier_t qualifier_a
Definition occtl_curves2d.h:335
occtl_rep_id_t curve_b
Definition occtl_curves2d.h:336
Definition occtl_curves2d.h:294
uint32_t struct_version
Definition occtl_curves2d.h:296
occtl_curve2d_tangency_qualifier_t qualifier
Definition occtl_curves2d.h:299
occtl_rep_id_t curve
Definition occtl_curves2d.h:298
const void * p_next
Definition occtl_curves2d.h:297
double tolerance
Definition occtl_curves2d.h:301
occtl_point2_t center
Definition occtl_curves2d.h:300
occtl_rep_id_t curve
Definition occtl_curves2d.h:382
const void * p_next
Definition occtl_curves2d.h:381
occtl_curve2d_tangency_qualifier_t qualifier
Definition occtl_curves2d.h:383
occtl_rep_id_t center_curve
Definition occtl_curves2d.h:384
double radius
Definition occtl_curves2d.h:385
uint32_t struct_version
Definition occtl_curves2d.h:380
double tolerance
Definition occtl_curves2d.h:386
Definition occtl_curves2d.h:247
occtl_rep_id_t curve_b
Definition occtl_curves2d.h:252
uint32_t struct_version
Definition occtl_curves2d.h:248
occtl_curve2d_tangency_qualifier_t qualifier_a
Definition occtl_curves2d.h:251
occtl_curve2d_tangency_qualifier_t qualifier_c
Definition occtl_curves2d.h:255
double initial_parameter_b
Definition occtl_curves2d.h:257
double tolerance
Definition occtl_curves2d.h:259
occtl_rep_id_t curve_c
Definition occtl_curves2d.h:254
double initial_parameter_a
Definition occtl_curves2d.h:256
occtl_curve2d_tangency_qualifier_t qualifier_b
Definition occtl_curves2d.h:253
occtl_rep_id_t curve_a
Definition occtl_curves2d.h:250
const void * p_next
Definition occtl_curves2d.h:249
double initial_parameter_c
Definition occtl_curves2d.h:258
occtl_rep_id_t curve_b
Definition occtl_curves2d.h:59
occtl_rep_id_t curve_a
Definition occtl_curves2d.h:57
occtl_curve2d_tangency_qualifier_t qualifier_a
Definition occtl_curves2d.h:58
double radius
Definition occtl_curves2d.h:61
uint32_t struct_version
Definition occtl_curves2d.h:55
occtl_curve2d_tangency_qualifier_t qualifier_b
Definition occtl_curves2d.h:60
const void * p_next
Definition occtl_curves2d.h:56
double tolerance
Definition occtl_curves2d.h:62
Definition occtl_curves2d.h:170
double tolerance
Definition occtl_curves2d.h:176
const void * p_next
Definition occtl_curves2d.h:172
occtl_curve2d_tangency_qualifier_t qualifier
Definition occtl_curves2d.h:174
uint32_t struct_version
Definition occtl_curves2d.h:171
occtl_point2_t point
Definition occtl_curves2d.h:175
occtl_rep_id_t curve
Definition occtl_curves2d.h:173
Definition occtl_curves2d.h:133
double tolerance
Definition occtl_curves2d.h:140
occtl_curve2d_tangency_qualifier_t qualifier_b
Definition occtl_curves2d.h:139
occtl_curve2d_tangency_qualifier_t qualifier_a
Definition occtl_curves2d.h:137
uint32_t struct_version
Definition occtl_curves2d.h:134
occtl_rep_id_t curve_b
Definition occtl_curves2d.h:138
occtl_rep_id_t curve_a
Definition occtl_curves2d.h:136
const void * p_next
Definition occtl_curves2d.h:135
Definition occtl_curves2d.h:205
double tolerance
Definition occtl_curves2d.h:215
int32_t use_initial_parameter
Definition occtl_curves2d.h:212
double angle_radians
Definition occtl_curves2d.h:211
const void * p_next
Definition occtl_curves2d.h:207
uint32_t struct_version
Definition occtl_curves2d.h:206
occtl_rep_id_t curve
Definition occtl_curves2d.h:208
occtl_geom2d_line_t reference_line
Definition occtl_curves2d.h:210
occtl_curve2d_tangency_qualifier_t qualifier
Definition occtl_curves2d.h:209
double initial_parameter
Definition occtl_curves2d.h:214
Definition occtl_curves2d.h:941
occtl_rep_id_t basis
Definition occtl_curves2d.h:944
const void * p_next
Definition occtl_curves2d.h:943
uint32_t struct_version
Definition occtl_curves2d.h:942
double offset
Definition occtl_curves2d.h:945
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
Definition occtl_geom.h:56