Re: Polygon manipulation in its nodes


Yeah, that is the way it is done by the TrackManipulation example.
I'm not sure that this could be done in a performant way with let's say
a polygon of 15000 points. That is why I went over to the
ManipulationRenderers. I will investigate and try it out.

Thanks,
Andrea

 
> One possibility:  use separate DirectManipulationRenderers
> for each node and redraw the connecting lines as the nodes
> are changed.
> 
> Tom
> 
> Andrea Antonello wrote:
> 
> >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
> >==============================================================================
> >
> > 
> >
> 

-- 
____________________________________________________________________________
HydroloGIS - Environmental Safety Modelling
Siemens Str. 19 via Siemens
I-39100 Bozen - Bolzano 
www.hydrologis.com

Andrea Antonello
Environmental Engineer
tel.     +39 0471 068065  
mobile:  +39 328 8497722
fax:  +39 36 328 8497722
email:   andrea.antonello@xxxxxxxxxxxxxx

"Let it be as much a great honour to take as to give learning,
if you want to be called wise."
Skuggsja' - The King's mirror - 1240 Reykjavik
____________________________________________________________________________

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