Of course sweep() cannot check for self intersection with respect to runtime.

Also interpolation schemes are prone to produce self intersection.

Btw. I wouldn't model the two techniques (interpolation and sweep) into a

single scheme. There are several steps involved, which can be implemented in

a more general fashion to get a more general scheme.

1. define some resampling function to unify the # of vertices (not needed if

skin() is used)

2. define an interpolation function that interpolates between the two

polygons according to some value k between 0 and 1.

3. use a composer function to model the extrusion trajectory (the final

shape)

4. use any sweep() for the dirty work (e.g. my Naca_sweep lib)

while 3) is the function that does the final shape, and 4) is library stuff,

1) and 2) are simply:

example($t); // set up an animation to view the interpolation

module example(k=.4, n=3, N=120)

{

p = interpol(circle(r=5, N=N), resample(circle(N=n), N/n), k);

polygon(p);

}

function interpol(p1, p2, k=0) = let(n= len(p1))

(n!=len(p2))? undef: [for (i=[0:n-1]) p1[i]*(1-k) + p2[i]*k];

function resample(p, n=1) = let(m = len(p))[for(i=[0:m-1], j=[0:n-1])

p[i]+(p[(i+1)%m] - p[i])/n*j];

function circle(r=5,N=12) = [for(i=[0:N-1]) r*[cos(360/N*i), sin(360/N*i)]];

--

Sent from:

http://forum.openscad.org/_______________________________________________

OpenSCAD mailing list

[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org