[.NET] 點的排序

看板Visual_Basic作者 (...)時間13年前 (2012/03/13 02:18), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
我是使用3d繪圖軟體rhinocerous裡的插件grasshopper來寫的vb 不知道po在這適合嗎? 主要要問的問題是這段: Sub GenerateGrid(ByVal Points As List(Of On3dPoint), ByVal xNum As Integer, ByVal yNum As Integer, ByRef Grid As On3dPoint(,)) Dim i,j As Integer Dim x,y As Integer x = 0 y = 0 'Create rows For i = 0 To Points.Count()-1 Step xNum+1 y = 0 For j = i To i + yNum Dim pt As New On3dPoint(Points(j)) Grid(x, y) = pt y = y + 1 Next x = x + 1 Next End Sub 假設我輸入的Points有12個點,坐標如下: (0,2)(1,2)(2,2)(3,2) (0,1)(1,1)(2,1)(3,1) (0,0)(1,0)(2,0)(3,0) xNum=3,yNum=2 請問要怎樣修改點的數點順序才會正確呢? 因為當我的點變更多時,例如有1040個點,xNum=39,yNum=25時 就會出現在數點時會只數到一哥數字就沒在數了 然後就會跳去下一行 變成結果類似這樣: o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o 一些點產出來的結果是null,所以就會形成類似這樣的pattern出現 不知道這樣又說明清楚嗎? 因為其實本身對vb只會一點點,這是在網路找到然後自己修改局部的程式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.116.1

03/13 05:13, , 1F
(1)x, y都拿掉。(2)j也拿掉,用i就好。
03/13 05:13, 1F

03/13 05:14, , 2F
(3)grid(x, y)用到的x, y改從Points(i)的屬性讀取。
03/13 05:14, 2F

03/13 09:56, , 3F
y都有歸0了x不需要嗎?
03/13 09:56, 3F

03/13 12:18, , 4F
其實我看不懂他要幹嘛…
03/13 12:18, 4F

03/13 12:19, , 5F
若要讓點座標normalize,為何不從每個點真的座標開始
03/13 12:19, 5F

03/13 15:49, , 6F
我也看不懂 pt看起來似乎是要傳回 但他用sub 不知目的
03/13 15:49, 6F

03/13 15:51, , 7F
單純看程式 1. x沒歸0我猜是主因 2. Dim在迴圈內
03/13 15:51, 7F

03/13 15:52, , 8F
迴圈的寫法也許是為了自定義抓值範圍的大小
03/13 15:52, 8F

03/13 15:53, , 9F
但用單個變數加mod的方式 個人認為會比這個寫法好...
03/13 15:53, 9F
文章代碼(AID): #1FNZu6vg (Visual_Basic)