Arrays openScad : I need to use the results of nested loops in quicksort() function but it seems impossible.

'arr' in second last line (in code below) will not contain more than one value at a time. In the first run of the loop arr gets the value 2.01, in second run the value is 1.6125, and so on. What I need is an array containing all four values in this way: arr=[[2.01],[1.6125],[3.775],[4.8]], because quicksort above needs such an input. If is it possible to achieve that in openScad, how do I do it?

function quicksort(arr) = !(len(arr)>0) ? [] : let(
pivot   = arr[floor(len(arr)/2)],
lesser  = [ for (y = arr) if (y  < pivot) y ],
equal   = [ for (y = arr) if (y == pivot) y ],
greater = [ for (y = arr) if (y  > pivot) y ]
) concat(quicksort(lesser), equal, quicksort(greater));

x_0=262; y_0=140; x_1=17.5;y_1=305;x_2=500;y_2=255; x_3=575;y_3=385;

ads=[[x_0,y_0],[x_1,y_1],[x_2,y_2],[x_3,y_3]];
for(b=[0 : 3])
{
 for(c=[0:0])
    if(ads[b][0]>=0 && ads[b][1]>=0)
    {         
            asc_diff=((ads[b][0])+ads[b][1])/2*0.01;                    
            arr=asc_diff; 
            //quicksort(arr) ;          
            echo("27: arr", arr); 
      }
 }

0 Answers