Polygon manipulation in its nodes (was: problems with DirectManipulationRendererJ3D)

I gave a closer look into the CurveManipulationRenderer class and the
regarding classes.
As I understand it, the rendering is passed to the ShadowCurveSetTypeJ3D
and then to the ShadowFunctionOrSetType.

Using that approach I am able to modify the shapefile on the display,
the problem is that it is modified not only in its nodes, but also in
every point between two nodes, which it should not. I saw the same
behaviour in the IDV. Even if the nodes are visualized with boxes, it is
possible to modify also points between the node boxes.

How I would like to have it behave is kinda similar as in the example of the
bom.TrackManipulation. 

Now I need some help to get the right starting point.
I would like to do the following:
- have the nodes (coordinates) of the shapefile surrounded by a small
shape of any kind
- have the manipulation renderer to modify only the nodes through the
dragging action, adapting the two lines that converge into the node so
that they stay straight lines and follow their node.

What exactly should I do? Extend the ShadowFunctionOrSetType and
override the doTranform method inserting the drawing of the shapes?

I really need some good advice.

Thanks,
Andrea






* [A.D. 27/11/06 17:25], Andrea Antonello <andrea.antonello@xxxxxxxxx> probably 
wrote:
> Hi Tom,
> you are right, it is a problem of Type.
> 
> I went a bit into the code and noticed that the method
> setIsDirectManipulation(boolean) of the DataRenderer is set to false
> (and throws the error I reported in the original post), if
> the type of the data is not of one of the following types:
> FunctionType, RealTupleType, RealType
> which the Gridded2DSet is not.
> 
> I will have a closer look to the CurveManipulationRenderer class. I
> already gave it a very quick look for it is a nice example of drawing.
> Hopefully you are right, I could have a chance to modify it for my needs.
> 
> Thanks man,
> Andrea
> 
> 
> 
> * [A.D. 27/11/06 10:10], Tom Rink <rink@xxxxxxxxxxxxx> probably wrote:
> > Hi Andrea,
> > 
> > The default DirectManipulationRenderer makes certain
> > assumptions about the structure of the linked data in
> > order to generate new data values as a result of user
> > gestures.   A polygon is too ambiguous for the default
> > logic and probably a "notSimpleField" or "notRealFunction"
> > exception is being thrown.  You could try using the
> > CurveManipulationRenderer class in the visad.bom
> > package.  I believe the folks at Unidata have done some
> > work with this in the IDV.
> > 
> > Tom
> > 
> > Andrea Antonello wrote:
> > 
> > >I am trying to create a toolbox that is able to modify shapefiles.
> > >My first approach is the existing DirectManipulationRendererJ3D, but as
> > >I try it with the code below, it gives me:
> > >
> > >null: DirectManipulationRendererJ3D.doTransform in the lower left corner
> > >of the display.
> > >
> > >_________________________________________________________
> > >           Coordinate[] tmpCoord = coords.elementAt(i);
> > >           int np = tmpCoord.length;
> > >           float[][] samples = new float[2][np];
> > >           for (int j = 0; j < np; j++) {
> > >               samples[0][j] = (float) tmpCoord[j].x;
> > >               samples[1][j] = (float) tmpCoord[j].y;
> > >           }
> > >
> > >           // the lines
> > >           Gridded2DSet tmpLines = new Gridded2DSet(earth, samples,
> > >                   samples[0].length);
> > >           // create a DataReference for river system
> > >           DataReference rivers_ref = new DataReferenceImpl("rivers");
> > >           rivers_ref.setData(tmpLines);
> > >
> > >           ConstantMap[] colorMapLines = { new ConstantMap(1, Display.Red),
> > >                   new ConstantMap(0, Display.Green),
> > >                   new ConstantMap(0, Display.Blue),
> > >                   new ConstantMap(3f, Display.LineWidth) };
> > >           display1.addReferences(new DirectManipulationRendererJ3D(),
> > >                   rivers_ref, colorMapLines);
> > >_________________________________________________________
> > >
> > >What am I doing wrong?
> > >
> > >Regards,
> > >Andrea

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