Elevation Grid Sample Listing: #VRML V2.0 utf8 Shape { appearance Appearance { material DEF M Material {} } geometry ElevationGrid { solid FALSE xDimension 53 xSpacing 1 zDimension 102 zSpacing 1 height [] color Color { color [] } } } |
The Flow Field
The flow field was created by first using a Perl script to arrange the x-y-z in the VRML 2.0 syntax. VRML uses
a righthand coordinate system, where the horizontal (across the screen) is considered the x direction, the vertical
(up and down on the screen) is considered the y direction, and the into and out of the screen is the z direction.
The Perl script read in the data, the xyz.dat file, and then rearranged the coordinates as they were given [1] [2]
[3], and printed them as [1] [3] [-2], where [3] was scaled by a factor. In the data set that was given to us the
[3] position, representing the depth had a negative sign. However, in VRML into the screen is a negative direction
and out of the screen a positive, hence the sign change.
The data given to us represented the location of every particle, at each of the 480 time-steps. However, until they are released each of the particles is at the point at which it will be released. Therefore, the particles released at the first time-step all of their locations are needed, and for the particles released at the second time-step all of the locations are needed accept those that occur during the first time-step. This works into the algorithm which says that the locations of interest for the nth set of three particles are their locations at the 480-n time-steps. This allows for one half of the locations given in xyz.dat to be eliminated, or approximately 6.5 MB. A Perl script was used to edit the revised version of xyz.dat into a VRML 2.0 file by creating arrays for the particles that were released at during the same time-step. Each of these 480 arrays made up the key values for a coordinate interpolator. The Perl file put these arrays into the coordinate interpolators, created the keys, routing statements, and index point sets that created this flow simulation.
Coordinate Interpolator Sample Listing: #VRML V2.0 utf8 DEF TIMER TimeSensor { cycleInterval 80 loop TRUE } DEF COORINTERP_n CoordinateInterpolator { key [] keyValue [] } Shape { appearance Appearance { material Material { diffuseColor 1 1 1 emissiveColor 1 1 1 shininess 1 ambientIntensity 1 } } geometry PointSet { coord DEF WAVE-COORD_n Coordinate { point [ 0 0 0, 0 0 0, 0 0 0 ] } } } ROUTE TIMER.fraction_changed TO COORD-INTERP_n.set_fraction ROUTE COORD-INTERP_n.value_changed TO WAVE-COORD_n.set_point |