NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Beginner question

Hi,

I'm trying to display a field of data samples (x,y)->z in 3D, pretty much
like the tutorial section 4. My field is a bit bigger, not unrealistically
big though: 365 x 100 samples.

When I try to render this, some of the peaks are missing. It seems to me
like the renderer constructs the surface using only every n-th data point
from my field and interpolates the rest (although actual values would
exist). This assumption is supported by the program below which fills the
field with random data: If every peak was drawn correctly no peak would have
several colour patches in it.

How can I get every peak drawn? (Btw iso-contour map achieves this, but
limits me in other respects).

Thanks for your help

Carsten

Sample program (contains some unnecessary code, please ignore that):

/*
 VisAD Tutorial
 Copyright (C) 2000 Ugo Taddei
 */

package tutorial.s4;

// Import needed classes

import java.awt.*;
import java.rmi.*;
import java.sql.*;

import javax.swing.*;

import com.dtecht.server.database.*;

import visad.*;
import visad.java3d.*;
import visad.util.*;

/**
 * VisAD Tutorial example 4_01 Like example 4_02 but using a ContourWidget
We
 * have the functions altitude = h(latitude, longitude) temperature
 * f(latitude, longitude)
 * 
 * represented by the MathType ( (latitude, longitude) -> (altitude,
temperature ) )
 * Map the altitude to ZAxis and temperature to RGB Run program with "java
 * P4_02"
 */

public class P4_02_1 {


        // The ContourWidget
        public P4_02_1(String[] args) throws RemoteException,
VisADException,
                        SQLException {

                RealType day = //RealType.getRealType("day");// 
                        RealType.getRealType("day",SI.meter,null);

                RealType age = RealType.getRealType("age",SI.meter,null);

                RealTupleType domain_tuple = new RealTupleType(day, age);

                RealType stddev
RealType.getRealType("stddev",SI.meter,null);
                RealType avg = RealType.getRealType("avg",SI.meter,null);

                RealTupleType range_tuple = new RealTupleType(avg, stddev);

                // Create a FunctionType (domain_tuple -> range_tuple )
                // Use FunctionType(MathType domain, MathType range)

                FunctionType func_domain_range = new
FunctionType(domain_tuple, range_tuple);

                int NCOLS = 100;
                int NROWS = 365;

                float[][] flat_samples = new float[2][NCOLS * NROWS];

                for(int i=0; i< NCOLS*NROWS;i++) {
                        flat_samples[0][i]= (float) Math.random();  
                        flat_samples[1][i]= flat_samples[0][i];
                }
                
                // Create Display and its maps

                // A 2D display

                DisplayImplJ3D display = new DisplayImplJ3D("display1");

                // Get display's graphics mode control and draw scales

                GraphicsModeControl dispGMC = (GraphicsModeControl) display
                                .getGraphicsModeControl();
                dispGMC.setScaleEnable(true);

                // Create the ScalarMaps: latitude to YAxis, longitude to
XAxis and
                // altitude to ZAxis and temperature to RGB
                // Use ScalarMap(ScalarType scalar, DisplayRealType
display_scalar)

                ScalarMap latMap = new ScalarMap(day, Display.YAxis);
                ScalarMap lonMap = new ScalarMap(age, Display.XAxis);

                // Add maps to display

                display.addMap(latMap);
                display.addMap(lonMap);

                // altitude to z-axis and temperature to color

                ScalarMap altZMap = new ScalarMap(avg, Display.ZAxis);
                display.addMap(altZMap);

                ScalarMap tempRGBMap = new ScalarMap(stddev, Display.RGB);
                display.addMap(tempRGBMap);



                Set domain_set = new Integer2DSet(domain_tuple, NROWS,
NCOLS);
        //      Set domain_set = new Linear2DSet(domain_tuple, 0, 364,
NROWS, 0, 99, NCOLS);
                FlatField vals_ff = new FlatField(func_domain_range,
domain_set);

                // ...and put the values above into it

                // Note the argument false, meaning that the array won't be
copied

                vals_ff.setSamples(flat_samples, false);                
                
                // Create a data reference and set the FlatField as our data
                
                DataReferenceImpl data_ref = new
DataReferenceImpl("data_ref");

                data_ref.setData(vals_ff);

                // Add reference to display

                display.addReference(data_ref);

                // Create application window and add display to window

                JFrame jframe = new JFrame("VisAD Tutorial example 4_02");
                jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                jframe.getContentPane().setLayout(new BorderLayout());
                jframe.getContentPane().add(display.getComponent(),
BorderLayout.CENTER);

                jframe.setSize(1200, 800);
                jframe.setVisible(true);

        }

        public static void main(String[] args) throws RemoteException,
VisADException {
                try {
                        new P4_02_1(args);
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

} // end of Visad Tutorial Program 4_01

-- 
Carsten Friedrich
Dtecht Pty Limited
Suite 1303, 33 Bligh Street, Sydney NSW 2000
Tel: +61 2 9220 8204   
Fax: +61 2 9238 0044   http://www.dtecht.com

Dtecht Pty Ltd - Confidential Communication The information contained in
this e-mail is confidential.  It is intended solely for the addressee. If
you receive this e-mail by mistake please promptly inform us by reply e-mail
and then delete the e-mail and destroy any printed copy. You must not
disclose or use in any way the information in the e-mail. There is no
warranty that this e-mail is error or virus free. It may be a private
communication, and if so, does not represent the views of Dtecht and its
associates. 




==============================================================================
To unsubscribe visad, visit:
http://www.unidata.ucar.edu/mailing-list-delete-form.html
==============================================================================


  • 2006 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: