developer:scriptsamples:multidimensional


Multidimensional Arrays

RhinoScript

Version: 4.0
Summary: Discusses rectangular and ragged multidimensional arrays.

Question

Why are there two types of multidimentional arrays? What is the difference between the (x)(y) and (x,y) notation?

Answer

VBScript supports two kinds of multidimensional arrays, called rectangular and ragged. A rectangular array is, well, rectangular. For example:

 Dim MyArray(3,2)

and you get:

 (0,0) (0,1) (0,2)
 (1,0) (1,1) (1,2)
 (2,0) (2,1) (2,2)
 (3,0) (3,1) (3,2)

which makes a nice rectangle. A three-dimensional array makes a rectangular prism, and so on up into the higher dimensions.

A common practice used by RhinoScript is to simulate multidimensional arrays by making an array of arrays. For example:

 Dim MyArray
 MyArray = Array(Array(1, 2, 3), Array(4, 5), Array(6, 7, 8, 9))

And so dereferencing the outer array gives you the inner array, which can then be dereferenced itself:

 Rhino.Print MyArray(2)(0) ' 6

But, you notice something about the indices if we write them out as before:

 (0)(0) (0)(1) (0)(2)
 (1)(0) (1)(1)
 (2)(0) (2)(1) (2)(2) (2)(3)

The indices make a ragged pattern, not a straight rectangular pattern. It is possible to create ragged higher dimensional, but allocating all the sub-arrays can be difficult.

Thus, in VBScript if you say:

 MyArray(2,3)

then you are talking to a rectangular two-dimensional array. And, if you say:

 MyArray(2)(3)

then you are talking to a one dimensional array that contains another one dimensional array.

developer/scriptsamples/multidimensional.txt · Last modified: 2010/01/26 16:37 (external edit) Driven by DokuWiki Recent changes RSS feed

 © 1997-2010 

McNeel North America Europe Latin AmericaAsia