作者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