filled triangles

Curtis Rueden ctrueden at wisc.edu
Fri Mar 9 10:57:52 MST 2007


Hi Ricardo,

> java.util.Arrays.fill(colors[0],j*4,(j+1)*4-1,theColor);
> behaves differently from:
> for (int i = j*4; i < (j+1)*4; i++) colors[0][i]=theColor;

The toIndex value of Arrays.fill -- (j+1)*4-1 -- is excluded from the
fill. To get the same behavior, use:
java.util.Arrays.fill(colors[0],j*4,(j+1)*4,theColor);

-Curtis

On 3/9/07, Ricardo Mantilla <ricardo at cires.colorado.edu> wrote:
> Hi Bill,
>
> I meant,
>
> float theColor=3.0f*(float)Math.random();
> java.util.Arrays.fill(colors[0],j*4,(j+1)*4-1,theColor);
>
> behaves differently from:
>
> float theColor=3.0f*(float)Math.random();
> for (int i = j*4; i < (j+1)*4; i++) colors[0][i]=theColor;
>
> Cheers,
>    Ricardo
>
> Ricardo Mantilla wrote:
> > Hi Bill,
> >
> > I wanted to close this thread letting you know that I found that the
> > strategy that you suggested of creating the FlatField was correct from
> > the beginning.
> > For some reason the line of code:
> >
> > float theColor=3.0f*(float)Math.random();
> > java.util.Arrays.fill(colors[0],j*4,(j+1)*4-1,2.0f);
> >
> > behaves differently from:
> >
> > float theColor=3.0f*(float)Math.random();
> > for (int i = j*4; i < (j+1)*4; i++) colors[0][i]=theColor;
> >
> > in a loop of j.  This was causing the colors array to end up with some
> > 0's.
> >
> > This is probably a Java1.5 on Mac OS X issue, completely unrelated to
> > VisAD.
> >
> > Cheers,
> >    Ricardo
> >
> > Bill Hibbard wrote:
> >> Hi Ricardo,
> >>
> >> To get solid color triangles, all vertices of a triangle must have the
> >> same color. To achieve this, it may be necessary that each
> >> Irregular2Dset in the UnionSet consist of a single triangle (so that
> >> no triangles share any vertices).
> >>
> >> Good luck,
> >> Bill
> >>
> >>     ----- Original Message -----
> >>     From: "Ricardo Mantilla"
> >>     To: "Bill Hibbard"
> >>     Subject: Re: filled triangles
> >>     Date: Thu, 08 Mar 2007 21:54:41 -0700
> >>
> >>
> >>     Hi Bill,
> >>
> >>     Thanks for your suggestion, however I am getting a some color
> >>     gradients on my graph (attached) rather than flat colors inside the
> >>     triangles. It may be due to how I am setting up the FlatField. In
> >>     the code that follows "regions" is an Irregular2DSet[] array, and
> >>     "colors" is a float[] array with as many positions as points in all
> >>     the Irregular2DSet.
> >>
> >>     CODE FOLLOWS +++++++++++++++++++
> >>
> >>     RealType xEasting =RealType.getRealType("xEasting"),
> >>     yNorthing=RealType.getRealType("yNorthing"),
> >>     tileColor=RealType.getRealType("tileColor");
> >>
> >>     RealTupleType domainXLYL=new RealTupleType(new RealType[]
> >>     {xEasting,yNorthing});
> >>
> >>     FunctionType func_xEasting_yNorthing_to_Color=new
> >>     FunctionType(domainXLYL,tileColor);
> >>
> >>     UnionSet allRegions=new UnionSet(domainXLYL,regions);
> >>
> >>     FlatField theColors=new
> >>     FlatField(func_xEasting_yNorthing_to_Color,allRegions);
> >>     theColors.setSamples(colors);
> >>
> >>     DataReference region_ref = new DataReferenceImpl("region");
> >>     region_ref.setData(theColors);
> >>
> >>     display_TIN.addReference(region_ref);
> >>
> >>     CODE ENDS +++++++++++++++++++
> >>
> >>     What am I doing wrong?
> >>
> >>     Thanks,
> >>     Ricardo
> >>
> >>
> >>
> >>     Bill Hibbard wrote:
> >>     > Hi Ricardo,
> >>     >
> >>     > I am using VisAD to display a bunch of filled triangles (as shown
> >>     > in attachment). Since each triangle is supposed to be a different
> >>     > color my approach was to create an irregular2DSet for each one
> >>     > (using Delaunay.fill()) and then create a reference for each one
> >>     > with an associated constant map (describing Red, Green, Blue).
> >>     >
> >>     > However, this is awfully slow when I have hundreds of triangles. I
> >>     > was looking for something like creating an unionSet with the
> >>     > irregular2DSets with each irregular2DSet having a property
> >>     > associated to the color but I couldn't find a way to to it.
> >>     >
> >>     >
> >>     > Construct a FlatField with MathType ((x, y) -> (r, g, b)) and
> >>     use the
> >>     > UnionSet as the domain Set of the FlatField. Then you have
> >>     ScalarMaps
> >>     > of the Field range values to Red, Green and Blue, and fill the
> >>     triangle
> >>     > vertex colors into those range values.
> >>     >
> >>     > Good luck,
> >>     > Bill
> >>     >
> >>     >
> >>     > --
> >>     >
> >>
> >>     -- -------------------------------------------------------------
> >>     Ricardo Mantilla
> >>     Posdoctoral Research Associate
> >>
> >>     Department of Earth and Environmental Science
> >>     New Mexico Institute of Mining and Technology
> >>     801 Leroy Pl. MSEC 254
> >>     Socorro, NM 87801
> >>
> >>     Phone: (505) 835-5068
> >>     Office: MSEC 254
> >>     http://cires.colorado.edu/~ricardo/
> >>     -------------------------------------------------------------
> >>     << triangles2.png >>
> >>
> >>
> >> --
> >>
> >> <http://a8-asy.a8ww.net/a8-ads/adftrclick?redirectid=en-mail_a_01>
> >>
> >
>
> --
> -------------------------------------------------------------
> Ricardo Mantilla
> Posdoctoral Research Associate
>
> Department of Earth and Environmental Science
> New Mexico Institute of Mining and Technology
> 801 Leroy Pl. MSEC 254
> Socorro, NM 87801
>
> Phone: (505) 835-5068
> Office: MSEC 254
> http://cires.colorado.edu/~ricardo/
> -------------------------------------------------------------
>
> ==============================================================================
> To unsubscribe visad, visit:
> http://www.unidata.ucar.edu/mailing-list-delete-form.html
> ==============================================================================
>
>

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



More information about the visad mailing list