Re: Changing the orientation of a 3D display

John-

In addition to Curtis's suggestions, look at
ProjectionControlJ3D.setOrthoView() for predefined
views of each cube face.  Also, here's some code
we use to move to any view:

    /**
     * Change point of view of a 3D VisAD display,
     * using user's input angles (unit = degree):
     * For example, a view from the
     * southwest has azimuth of 225 and decAngle say 20 to 70 or so.
     * Preserves initial scaling and aspect ratios.
     *
     * @param azimuth  azimuth from "north," clockwise, 0 to 360
     * @param decAngle tilt angle down from upward vertical. 0-180
     *
     */
    public void rotateView(double azimuth, double decAngle) {

        if (getDisplayMode() != MODE_3D) return;
        // trap input bad values - not necessary since trig
        // functions handle values outside of 0-360 properly.
        // rotation around z axis, made from user's "azimuth"
        double zAngle = 180.0 - azimuth;

        try {

            // rotate in z
            double[] aziMatrix = getDisplay().make_matrix(0.0,
                                     0.0, zAngle, 1.0, 0.0, 0.0, 0.0);
double[] combo getDisplay().multiply_matrix(aziMatrix, getProjectionMatrix());

            // rotate in x
            double[] decMatrix = getDisplay().make_matrix(decAngle,
                                     0.0, 0.0, 1.0, 0.0, 0.0, 0.0);

            // total rotation matrix is computed and applied
            double[] combo2
                getDisplay().multiply_matrix(decMatrix, combo);

            setProjectionMatrix(combo2);

        } catch (Exception exp) {
            System.out.println("  rotate view got " + exp);

getProjectionMatrix() and setProjectionMatrix() are just wrappers
around ProjectionControl.getMatrix() and PC.setMatrix().

Don

John Osborne wrote:
Is it possible to change the orientation of a 3D display programatically? I want the user, for example, to be able to view just the xy face of a 3D plot (or any other face as well). I also want the user to be able specify the orientation of the plot axes in 3-space and add the ability to wobble or rock a plot. I have been poking around in the VisAD JavaDoc but haven't found anything that seem to do this. TIA

John Osborne
NOAA/PMEL


--
*************************************************************
Don Murray                               UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx                        P.O. Box 3000
(303) 497-8628                              Boulder, CO 80307
http://www.unidata.ucar.edu/staff/donm
*************************************************************