primitives-1d_bezier-curve.js
import oc from "../opencascade/initializer";
import {Edge} from "../modeling";
import {Plane, Vector} from "../math";
/**
* Creates a Bezier curve from the given control points.
* @memberof primitives-1D
* @alias BezierCurve
* @param {Object} parameters - The parameters for the Bezier curve.
* @param {Plane} [parameters.plane=Plane.XY] - The plane in which the curve is constructed.
* @param {Vector[]} parameters.points - The control points for the Bezier curve.
* @returns {Edge} An `Edge` object representing the constructed Bezier curve.
*/
const BezierCurve = ({plane = Plane.XY, points}) => {
const arrayOfPoints = new oc.TColgp_Array1OfPnt_2(1, points.length);
points.forEach((point, index) => {
const globalPoint = plane.toWorldCoordinates(new oc.gp_Pnt_3(point.x, point.y, point.z));
arrayOfPoints.SetValue_1(index + 1, globalPoint);
});
const bezier = new oc.Geom_BezierCurve_1(arrayOfPoints);
const handle = new oc.Handle_Geom_Curve_2(bezier);
return new Edge(new oc.BRepBuilderAPI_MakeEdge_24(handle).Edge());
};
export {BezierCurve};