作者walauweb (...)
看板Visual_Basic
標題[.NET] 點的排序
時間Tue Mar 13 02:18:44 2012
我是使用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
1F:→ MOONRAKER:(1)x, y都拿掉。(2)j也拿掉,用i就好。 03/13 05:13
2F:→ MOONRAKER:(3)grid(x, y)用到的x, y改從Points(i)的屬性讀取。 03/13 05:14
3F:→ Berger927:y都有歸0了x不需要嗎? 03/13 09:56
4F:→ MOONRAKER:其實我看不懂他要幹嘛… 03/13 12:18
5F:→ MOONRAKER:若要讓點座標normalize,為何不從每個點真的座標開始 03/13 12:19
6F:→ Berger927:我也看不懂 pt看起來似乎是要傳回 但他用sub 不知目的 03/13 15:49
7F:→ Berger927:單純看程式 1. x沒歸0我猜是主因 2. Dim在迴圈內 03/13 15:51
8F:→ Berger927:迴圈的寫法也許是為了自定義抓值範圍的大小 03/13 15:52
9F:→ Berger927:但用單個變數加mod的方式 個人認為會比這個寫法好... 03/13 15:53