Re: Elevation surfaces -- Cutting planes

Hi Mohamad,

> Ugo (and others), have you thought about how to "cut" the elevation surfaces?
> Thinking parametrically, perhaps a function like: ((x, y)-->z)-->((x, y) 
> -->z)?
> Cutting planes could be parameters too.  Just rambling...

I may be a little confused, but my interpretation of what you want
is the intersection of an elevation surface with a plane, which is
a curve.  If the plane is horizontal, you can do this as follows.
Assume the elevation surface is "FlatField elevation" with MathType
((x, y) -> z) and the z level of the horizontal plane you want to
intersect is "float z_plane".  Then you can display the curve with
the following code:

  display.addMap(new ScalarMap(x, Display.XAxis));
  display.addMap(new ScalarMap(y, Display.YAxis));
  display.addMap(new ScalarMap(z, Display.ZAxis));
  ScalarMap contour_map = new ScalarMap(z, Display.IsoContour);
  ContourControl control = (ContourControl) contour_map.getControl();
  control.setContourInterval(1.0f, z_plane, z_plane, z_plane);

Its possible that the last line might need to be:

  control.setContourInterval(1.0f, z_plane - 0.1f, z_plane + 0.1f, z_plane);

Of course, I may be mis-interpreting your question.


You could create a Real with MathType z and link it to the display via
DirectManipulationRendererJ3D, then also link the Real to a CellImpl
that would invoke

  control.setContourInterval(1.0f, z_plane - 0.1f, z_plane + 0.1f, z_plane);

where z_plane = the getValue() from the Real.  This would let you move the
plane up and down in the display by dragging the depiction of the Real.
(Note the Real would have a DataReferenceImpl that would link to display
and the CellImpl.)

Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
hibbard@xxxxxxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738