@@ -578,21 +578,24 @@ public static ArrayList<Transform> bezierToTransforms(Vector3d start, Vector3d c
578578 // //com.neuronrobotics.sdk.common.Log.error("Parsing "+startString+" \nand\n"+b);
579579 return bezierToTransforms (path , path2 , iterations , controlA , controlB );
580580 }
581-
582581 public static CSG sweep (Polygon p , Transform increment , Transform offset , int steps ) {
582+ return sweep (p ,increment ,offset ,steps , (u ,d )->{return new Transform ();});
583+ }
584+ public static CSG sweep (Polygon p , Transform increment , Transform offset , int steps ,ITransformProvider provider ) {
583585 Polygon offsetP = p .transformed (offset );
584586 List <Polygon > newPolygons = new ArrayList <>();
585587 newPolygons .addAll (PolygonUtil .concaveToConvex (offsetP ));
586588 Transform running = new Transform ();
587- Polygon prev = offsetP ;
589+ Polygon prev = offsetP . transformed ( provider . get ( 0 , steps )) ;
588590 for (int i = 0 ; i < steps ; i ++) {
589591 running .apply (increment );
590- Polygon step = offsetP .transformed (running );
592+ double unit = ((double )i )/((double )steps );
593+ Polygon step = offsetP .transformed (provider .get (unit , steps )).transformed (running );
591594 List <Polygon > parts = monotoneExtrude (prev , step );
592595 prev = step ;
593596 newPolygons .addAll (parts );
594597 }
595- Polygon polygon2 = offsetP .transformed (running );
598+ Polygon polygon2 = offsetP .transformed (provider . get ( 1 , steps )). transformed ( running );
596599 List <Polygon > topPolygons = PolygonUtil .concaveToConvex (polygon2 .flipped ());
597600 newPolygons .addAll (topPolygons );
598601
0 commit comments