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);
display.addMap(contour_map);
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.
Cheers,
Bill
p.s.,
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
http://www.ssec.wisc.edu/~billh/vis.html