070919_Search…

 

Option Explicit
‘Script written by <Marc Fornes>
‘Script copyrighted by <Marc Fornes / theverymany.net>
‘Script version 13 September 2007 16:05:03

Call Main()
Sub Main()
 
 Dim i,j,k
 Dim arrPt
 
 Dim dblLow : dblLow = -5
 Dim dblUp : dblUp = 10

 Dim arrPts()

 Dim n : n = 0

 Call rhino.enableRedraw(False)

 ‘ ===========================

 For i = 0 To 5

  For j = 0 To 5

   For k = 0 To 5

    ReDim Preserve arrpts(n)

    arrPts(n) = array(random(dblLow, dblUp),random(dblLow, dblUp),random(dblLow, k*dblUp))

    Call rhino.AddPoint (arrPts(n))

    If n >= 2 Then

     Dim arrPtNearer : arrPtNearer = functNearestNeighbor(arrPts, n)

     Dim strLine : strLine = rhino.addLine(arrPts(n), arrPtNearer)

     Call Rhino.AddCone (arrPts(n), arrPtNearer, 0.2)

     call rhino.addSphere (arrPts(n), 0.2)

    End If

    n = n + 1   

   Next 

  Next

 Next

 ‘ ===========================

 Call rhino.enableRedraw(True)
 

End Sub

Function random(low, up)
 Randomize
 random = (up – low) * Rnd + low  
End Function

Function functNearestNeighbor (arrPts, index)
 
 Dim k, dblDist
 Dim dblDistMin : dblDistMin = 100000
 
 For k = 0 To UBound(arrPts)
   
  dblDist = Rhino.Distance(arrPts(index), arrPts(k))
  
  If dblDist <> 0 And dblDist < dblDistMin Then
   dblDistMin = dblDist
   Dim arrPtNearest : arrPtNearest = arrPts(k)
  End If
  
 Next
 
 functNearestNeighbor = arrPtNearest
 
End Function

Advertisements