Re: [visad] Strange rendering depending on axis range

Respected Tom Rink Sir and Tomas Pluskal Sir.

I have tried to access the latest visad source code from the SVN.
And added support into byRef renderer to take care
Range->ZAxis and Range->RGB Mapping.


Pluskal Sir, kindly preseve the current jar file and
update your jar with the attached class file, it should work for you.
Use jar command with -uvf option.

Attached herewith the modified program VisadTestDump.java.
I am putting the class file on ftp.ssec.wisc.edu/pub/incoming.
I am not able to send it through my office mail.

Kindly see my comments in the program.

Sort of a disclaimer notice, but still to say.
This is just a TEMPORARY (NOT PROPERLY TESTED) SOLUTION but still QUITE EFFICIENT ;-).

Just give it a try.

I hope it helps you a bit.

with regards
Ghansham

On 05/25/2012 11:30 PM, visad-request@xxxxxxxxxxxxxxxx wrote:
Send visad mailing list submissions to
        visad@xxxxxxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
        http://mailman.unidata.ucar.edu/mailman/listinfo/visad
or, via email, send a message with subject or body 'help' to
        visad-request@xxxxxxxxxxxxxxxx

You can reach the person managing the list at
        visad-owner@xxxxxxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of visad digest..."


Today's Topics:

    1. Re: Strange rendering depending on axis range (Tom Rink)
    2. Re: Strange rendering depending on axis range (Tomas Pluskal)


----------------------------------------------------------------------

Message: 1
Date: Fri, 25 May 2012 00:16:39 -0500
From: Tom Rink<rink@xxxxxxxxxxxxx>
To: visad@xxxxxxxxxxxxxxxx
Subject: Re: [visad] Strange rendering depending on axis range
Message-ID:<4FBF15B7.70709@xxxxxxxxxxxxx>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"

On 5/25/12 12:00 AM, Tomas Pluskal wrote:
Hi Tom,

I was experimenting with your VisadTest.java source, and discovered this:

                         double xMin = 1.0;
                         double xMax = 1.0007;
                         double yMin = 0.0;
                         double yMax = 100.0;
                         int xRes = 1000;
                         int yRes = 10;

formally setting the ranges to decimal values fixes the problem for me.
We are visualizing mass spectrometry data, and if the user wants to
plot a single mass signal, we need to visualize a narrow range of m/z
values, such as 179.0551 ~ 179.0558.

1.0  to 1.00007  did not work, I think this can be expected.
Hmm, why this can be expected?
0.00007/1000 is possibly too small for float precision.



Tomas


===============================================
Tom?s( Pluskal
G0 Cell Unit, Okinawa Institute of Science and Technology Graduate
University
1919-1 Tancha, Onna-son, Okinawa 904-0495, Japan
TEL: +81-98-966-8684
Fax: +81-98-966-2890



_______________________________________________
visad mailing list
visad@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit: 
http://www.unidata.ucar.edu/mailing_lists/
-------------- next part --------------
An HTML attachment was scrubbed...
URL:<http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20120525/ddf98eaa/attachment.html>

------------------------------

Message: 2
Date: Fri, 25 May 2012 05:41:16 +0000
From: Tomas Pluskal<pluskal@xxxxxxx>
To: "visad@xxxxxxxxxxxxxxxx"<visad@xxxxxxxxxxxxxxxx>
Subject: Re: [visad] Strange rendering depending on axis range
Message-ID:<DD0D6ACD-8B55-4FA4-BAC0-EB8B2B5D7640@xxxxxxx>
Content-Type: text/plain; charset="windows-1252"


0.00007/1000 is possibly too small for float precision.

I see.

But 7000 / 10000 is not that small... (xMin = 10000000, xMax = 10007000, xRes = 
10000 shows the same issue).

Tomas


===============================================
Tom?? Pluskal
G0 Cell Unit, Okinawa Institute of Science and Technology Graduate University
1919-1 Tancha, Onna-son, Okinawa 904-0495, Japan
TEL: +81-98-966-8684
Fax: +81-98-966-2890

-------------- next part --------------
An HTML attachment was scrubbed...
URL:<http://mailman.unidata.ucar.edu/mailing_lists/archives/visad/attachments/20120525/4d2b06d0/attachment.html>

------------------------------

_______________________________________________
visad mailing list
visad@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit: 
http://www.unidata.ucar.edu/mailing_lists/

End of visad Digest, Vol 30, Issue 11
*************************************


import java.awt.Color;
import java.awt.Component;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;

import javax.swing.JFrame;

import visad.DataReferenceImpl;
import visad.Display;
import visad.FlatField;
import visad.FunctionType;
import visad.GraphicsModeControl;
import visad.Linear2DSet;
import visad.RealTupleType;
import visad.RealType;
import visad.ScalarMap;
import visad.ConstantMap;
import visad.java3d.DisplayImplJ3D;
import visad.java3d.DisplayRendererJ3D;
import visad.bom.ImageRendererJ3D;

public class VisadTestDump {

        public static void main(String[] args) {

                try {
                        double xMin = 100;
                        double xMax = 1000;
                        double yMin = 0;
                        double yMax = 30;
                        int xRes = 1000;
                        int yRes = 1000;
                        //Use this property to set Texture ByReference 
Rendering for images
                        System.setProperty(visad.ShadowType.PROP_IMAGE_BY_REF, 
"true");
                        //Optional:Just try to uncomment this. If your graphics 
card supports NPOT
                        //textures. You may save up a lot of memory.
                        
//System.setProperty(visad.java3d.DisplayImplJ3D.PROP_TEXTURE_NPOT, "true");

                        float[][] zValues = new float[1][xRes * yRes];

                        File f = new File("datasetdump");
                        FileInputStream fs = new FileInputStream(f);
                        DataInputStream ds = new DataInputStream(fs);
                        for (int i = 0; i < zValues[0].length; i++) {
                                zValues[0][i] = (float)ds.readDouble();
                        }
                        ds.close();

                        RealType xType = RealType.getRealType("x");
                        RealType yType = RealType.getRealType("y");
                        RealType zType = RealType.getRealType("z");
                        RealTupleType domainTuple = new RealTupleType(xType, 
yType);
                        FunctionType func = new FunctionType(domainTuple, 
zType);

                        ScalarMap xMap = new ScalarMap(xType, Display.XAxis);
                        ScalarMap yMap = new ScalarMap(yType, Display.YAxis);
                        ScalarMap zMap = new ScalarMap(zType, Display.ZAxis);
                        ScalarMap colorMap = new ScalarMap(zType, Display.RGB);

                        DisplayImplJ3D display = new DisplayImplJ3D("display");

                        display.addMap(xMap);
                        display.addMap(yMap);
                        display.addMap(zMap);
                        display.addMap(colorMap);

                        xMap.setRange(xMin, xMax);

                        Linear2DSet domainSet = new Linear2DSet(domainTuple, 
xMin, xMax,
                                        xRes, yMin, yMax, yRes);

                        FlatField flatField = new FlatField(func, domainSet);
                        flatField.setSamples(zValues, false);
                        DataReferenceImpl dataReference = new 
DataReferenceImpl("data");
                        dataReference.setData(flatField);
                        //Adding constant Map:Dont use value less than 1
                        ConstantMap cmap[] = {new ConstantMap(1.0f, 
Display.CurvedSize)};
                        //Use ImageRendererJ3D than using Default Renderer
                        display.addReferences(new ImageRendererJ3D(), 
dataReference, cmap);
                        //display.addReference(dataReference);

                        DisplayRendererJ3D dRenderer = (DisplayRendererJ3D) 
display
                                        .getDisplayRenderer();
                        dRenderer.setForegroundColor(Color.black);
                        dRenderer.setBackgroundColor(Color.white);
                        dRenderer.setBoxOn(true);

                        GraphicsModeControl graphicsModeControl = display 
.getGraphicsModeControl();
                        graphicsModeControl.setScaleEnable(true);
                        //graphicsModeControl.setTextureEnable(false);

                        JFrame newFrame = new JFrame();
                        Component component = display.getComponent();
                        newFrame.getContentPane().add(component);
                        newFrame.pack();
                        newFrame.setVisible(true);

                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

}