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.
Hi Don, Strange your original message never appeared on the list. What you generally need is a way to find the closest point on a 1-D manifold to a ray (the ray defined by the cursor). There are two similar things in the system: 1. DataRenderer.findRayManifoldIntersection() uses Newton's method to find the intersection of a ray with a 2-D manifold. 2. DataRenderer.java, lines 2140-2155 finds the closest point on a 1-D line (a straight 1-D manifold) to a ray. If I were you, I'd start with a simple approach and add complexity only as needed. So I'd start with a manipulable point initialized somewhere on your 1-D manifold, linked to your Display via a DirectManipulationRendererJ3D. As the user drags this point, it will move in a plane parallel to the screen but not be constrained to move along your 1-D manifold. In fact, such constraint is impossible given that in general the ray defined by the user's cursor location will not intersect the 1-D manifold. So render the manipulable point as just a single dim point. But also display a more prominent point that moves along the 1-D manifold, at the sample along the manifold that your CellImpl (triggered by changes in the manipulable point) calculates to be the nearest point on the 1-D maniold to the manipulable point. Given the visual feedback to the user of the prominent point moving along the 1-D manifold, this may be good enough. If it isn't, the next iteration would be for the CellImpl to compute the closest point on the 1-D manifold to the ray defined by the manipulable point. You might get this ray by converting from the Data coords of the manipulable point to (XAxis, YAxis, ZAxis) via the ScalarMaps, then pass this to MouseBehaviorJ3D.cursorRay() to get the ray. But only do this ray business if the firts approach isn't good enough. Given the general utility of this answer, I will take the liberty of CC'ing to the list. Good luck, Bill On Fri, 26 Aug 2005, Don Murray wrote: > Hi Bill- > > Is this possible at present? If not, what would it take to > do something like this? A new DataRenderer? > > Don > > -------- Original Message -------- > Subject: Direct manipulation along a line > Date: Mon, 22 Aug 2005 10:54:17 -0600 > From: Don Murray <dmurray@xxxxxxxxxxxxxxxx> > Reply-To: dmurray@xxxxxxxxxxxxxxxx > Organization: UCAR/Unidata > To: visad-list@xxxxxxxxxxxxxxxx > > Hi- > > I have a flight track that is a Gridded2DSet on a a 1-D > manifold (a line). I'd like to put a directly manipulable > shape (e.g. an airplane) on that line that I can drag along > the line. As the shape is manipulated, changes in position > would trigger changes in some other display. > > Is there a way to restrict the movement of the shape to be > the along the flight track? I know I can restrict it in > XYZ using constant maps, but what I want is something where > the ConstantMap is the Gridded2DSet. > > Thanks for your help. > > Don > ************************************************************* > Don Murray UCAR Unidata Program > dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000 > (303) 497-8628 Boulder, CO 80307 > http://www.unidata.ucar.edu/staff/donm > "Time makes everyone interesting, even YOU!" > ************************************************************* > > > -- > ************************************************************* > Don Murray UCAR Unidata Program > dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000 > (303) 497-8628 Boulder, CO 80307 > http://www.unidata.ucar.edu/staff/donm > "Time makes everyone interesting, even YOU!" > ************************************************************* > > >
visad
archives: