Merge pull request #1553 from adrianVmariano/master

vnf_bend bugfix
This commit is contained in:
adrianVmariano 2025-01-26 17:20:51 -05:00 committed by GitHub
commit 26b270af65
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 1 deletions

View file

@ -42,6 +42,9 @@
// and intermediate values of `u` fill in the curve in a non-uniform fashion. This function uses an optimized method which
// is best when `u` is a long list and the bezier degree is 10 or less. The degree of the bezier
// curve is `len(bezier)-1`.
// .
// Note that if you have a bezier **path** (see below) then you should use {{bezpath_points()}} to
// evaluate the points on that bezier path. This function is for a single bezier.
// Arguments:
// bezier = The list of endpoints and control points for this bezier curve.
// u = Parameter values for evaluating the curve, given as a single value, a list or a range.
@ -194,6 +197,9 @@ function _bezier_matrix(N) =
// of the bezier curve, but you still get the same number of (more tightly spaced) points.
// The distance between the points will *not* be equidistant.
// The degree of the bezier curve is one less than the number of points in `curve`.
// .
// Note that if you have a bezier **path** (see below) then you should use {{bezpath_curve()}} to
// evaluate the that bezier path. This function is for a single bezier.
// Arguments:
// bezier = The list of control points that define the Bezier curve.
// splinesteps = The number of segments to create on the bezier curve. Default: 16

View file

@ -1677,7 +1677,7 @@ function vnf_bend(vnf,r,d,axis="Z") =
step = (extent[1]-extent[0]) / steps,
bend_at = [for(i = [1:1:steps-1]) i*step+extent[0]],
slicedir = axis=="X"? "Y" : "X", // slice in y dir for X axis case, and x dir otherwise
sliced = vnf_slice(vnf, slicedir, bend_at),
sliced = vnf_triangulate(vnf_slice(vnf, slicedir, bend_at)),
coord = axis=="X" ? [0,sign(bmax.z),0] : axis=="Y" ? [sign(bmax.z),0,0] : [sign(bmax.y),0,0],
new_vert = [for(p=sliced[0])
let(a=coord*p*180/(PI*r))