Ronaldo rcmpersiano at gmail.com
Sat Jun 25 11:06:39 EDT 2016

```What you want is to control the sweep torsion. However, there is no such
control in the sweep.scad. A modified version was proposed by Oskar Linde to
minimize the torsion along the path. It may be found in
However, that is not enough to avoid unwanted torsions in all cases. The
following code calculate an addition (or subtraction) of a specified
rotation angle of the path_transforms:

> // a simple rotation in Z
> function zrotation(ang) =
>   let(c = cos(ang), s = sin(ang))
>      [[  c, s, 0], [ -s, c, 0], [  0, 0, 1]];
>
> // a sequence of acumulated r transform
> function accumulated_transform(r,n,_r=[]) =
>     (n==0)?
>         _r:
>         accumulated_transform(
>             r,
>             n-1,
>             (len(_r)==0)? [r]
>                 : concat( _r, [r * _r[len(_r)-1]] )
>                              );
> // changes the initial and final rotation angle
> function adjust_rotations(angi, angtot, path_transf) =
>      let( l    = len(path_transf),
>           rot  = zrotation(angtot/l),
>           rini = zrotation(angi),
>           w    = [0,0,0,1],
>           rots = accumulated_transform(rot,l))
>      [ for(i=[0:l-1])
> path_transf[i]*construct_rt(rots[i],w)*construct_rt(rini,w) ];

A tipical use of it i:

>   path_transf = construct_transform_path(path);
>   sweep(section(), path_transforms, path);

where ini_ang and final_ang is the additional initial angle and final angle
of the section rotations.

Hope it helps.

--
View this message in context: http://forum.openscad.org/redundant-question-tp17808p17810.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

```