diff options
author | Spivak Vladimir (cwolf3d) <cwolf3d@gmail.com> | 2019-10-11 02:52:59 +0300 |
---|---|---|
committer | Spivak Vladimir (cwolf3d) <cwolf3d@gmail.com> | 2019-10-11 02:52:59 +0300 |
commit | 04f482c5aa48a1b04a429dafba3e09f7287b9110 (patch) | |
tree | 310459ae8934ebb7b3449217a758a00d374ce7d0 /curve_tools/internal.py | |
parent | db2c65d9e7885809a9ac6ab09fa2585e6b35d353 (diff) |
Addon: Curve Tools: Refactoring. Added context menu.
Diffstat (limited to 'curve_tools/internal.py')
-rw-r--r-- | curve_tools/internal.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/curve_tools/internal.py b/curve_tools/internal.py index 6741bb22..e967fc6e 100644 --- a/curve_tools/internal.py +++ b/curve_tools/internal.py @@ -408,6 +408,25 @@ def bezierMultiIntersection(segments): prepareSegmentIntersections(segments) subdivideBezierSegments(segments) +def bezierProjectHandles(segments): + insertions = [] + index_offset = 0 + for segment in segments: + if len(insertions) > 0 and insertions[-1][0] != segment['spline']: + index_offset = 0 + points = bezierSegmentPoints(segment['beginPoint'], segment['endPoint']) + paramA, paramB, pointA, pointB = nearestPointOfLines(points[0], points[1]-points[0], points[3], points[2]-points[3]) + if pointA and pointB: + segment['cuts'].append({'param': 0.5}) + insertions.append((segment['spline'], segment['beginIndex']+1+index_offset, (pointA+pointB)*0.5)) + index_offset += 1 + subdivideBezierSegments(segments) + for insertion in insertions: + bezier_point = insertion[0].bezier_points[insertion[1]] + bezier_point.co = insertion[2] + bezier_point.handle_left_type = 'VECTOR' + bezier_point.handle_right_type = 'VECTOR' + def bezierSubivideAt(points, params): if len(params) == 0: return [] |