簡體   English   中英

網格切片的排序算法

[英]Sorting algorithm for mesh slicing

3D打印機軟件的排序算法出現問題。 我獲得給定.stl文件的切片的xyz數據作為具有三列和n行的向量,其中n是每個切片的點數。

因此,向量的代碼如下所示:

        x=matrix[n][0];
        y=matrix[n][1];
        z=matrix[n][2];

所以矩陣是我的向量,包含了網格中所有點的所有坐標。

當我打印出點的坐標時,會得到一個未排序的列表。 因此,以下列表顯示了多維數據集的第一層/切片的點,尺寸為10x10x10mm。

X=-5.000000, Y=2.000000, Z=-2.000000
X=-5.000000, Y=-5.000000, Z=-2.000000
X=5.000000, Y=5.000000, Z=-2.000000
X=5.000000, Y=-2.000000, Z=-2.000000
X=5.000000, Y=-2.000000, Z=-2.000000
X=5.000000, Y=-5.000000, Z=-2.000000
X=5.000000, Y=5.000000, Z=-2.000000
X=2.000000, Y=5.000000, Z=-2.000000
X=2.000000, Y=5.000000, Z=-2.000000
X=-5.000000, Y=5.000000, Z=-2.000000
X=5.000000, Y=-5.000000, Z=-2.000000
X=-2.000000, Y=-5.000000, Z=-2.000000
X=-2.000000, Y=-5.000000, Z=-2.000000
X=-5.000000, Y=-5.000000, Z=-2.000000

因此,此結果在此圖中顯示。 未排序的點

我的第一種方法是對點進行排序,但結果與我需要的東西相去甚遠。 分類

排序后的列表如下所示

X=5.000000, Y=5.000000, Z=-2.000000 
X=5.000000, Y=5.000000, Z=-2.000000 
X=5.000000, Y=-2.000000, Z=-2.000000 
X=5.000000, Y=-2.000000, Z=-2.000000 
X=5.000000, Y=-5.000000, Z=-2.000000 
X=5.000000, Y=-5.000000, Z=-2.000000 
X=2.000000, Y=5.000000, Z=-2.000000 
X=2.000000, Y=5.000000, Z=-2.000000 
X=-2.000000, Y=-5.000000, Z=-2.000000 
X=-2.000000, Y=-5.000000, Z=-2.000000 
X=-5.000000, Y=5.000000, Z=-2.000000 
X=-5.000000, Y=2.000000, Z=-2.000000 
X=-5.000000, Y=-5.000000, Z=-2.000000 
X=-5.000000, Y=-5.000000, Z=-2.000000 

唯一的想法,如何對點進行排序是從笛卡爾坐標系的第一象限開始,然后移至隨后的象限。 當我逐層計算時,z-coodrinate可以忽略。 但是為此,我不知道如何啟動代碼。 有人對我有提示嗎?

我要實現的是按以下方式對點列表進行排序:

X=-5.000000, Y=5.000000, Z=-2.000000
X=-5.000000, Y=2.000000, Z=-2.000000
X=-5.000000, Y=-5.000000, Z=-2.000000
X=-5.000000, Y=-5.000000, Z=-2.000000
X=-2.000000, Y=-5.000000, Z=-2.000000
X=-2.000000, Y=-5.000000, Z=-2.000000
X=5.000000, Y=-5.000000, Z=-2.000000
X=5.000000, Y=-5.000000, Z=-2.000000
X=5.000000, Y=-2.000000, Z=-2.000000
X=5.000000, Y=-2.000000, Z=-2.000000
X=5.000000, Y=5.000000, Z=-2.000000
X=5.000000, Y=5.000000, Z=-2.000000
X=2.000000, Y=5.000000, Z=-2.000000
X=2.000000, Y=5.000000, Z=-2.000000

在此處輸入圖片說明

通過更新,這現在變得微不足道了。 您要按atan2(p1.y,p1.x) < atan2(p2,y, p2,x)排序點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM