是否有可能在openscads quicksort()中使用循环结果?>

问题描述 投票:0回答:1

数组openScad:我需要在quicksort()函数中使用嵌套循环的结果,但似乎不可能。

倒数第二行中的

'arr'(在下面的代码中)一次不会包含多个值。在循环的第一次运行中,arr的值为2.01,在第二次运行中,值为1.6125,依此类推。我需要的是以这种方式包含所有四个值的数组:arr = [[2.01],[1.6125],[3.775],[4.8]],因为上面的quicksort需要这样的输入。如果可以在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); 
      }
 }

数组openScad:我需要在quicksort()函数中使用嵌套循环的结果,但似乎是不可能的。最后一行的“ arr”(在下面的代码中)一次不会包含多个值。 ...

loops quicksort using openscad
1个回答
0
投票

您必须在初始化时使用硬编码值或依赖于硬编码值的函数设置数组的所有值。因此,可以的,您可以创建一个其值已计算出来的数组,但是必须在初始化时进行所有计算。看起来可能像这样:

© www.soinside.com 2019 - 2024. All rights reserved.