数组 openScad:我需要在 quicksort() 函数中使用嵌套循环的结果,但这似乎是不可能的。
倒数第二行(在下面的代码中)中的“arr”一次不会包含多个值。在循环的第一次运行中,arr 得到值 2.01,在第二次运行中,值是 1.6125,依此类推。我需要的是一个包含所有四个值的数组:arr=[[2.01],[1.6125],[3.775],[4.8]],因为上面的快速排序需要这样的输入。如果可以在 openScad 中实现这一点,我该怎么做?
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);
}
}