001 /*---------------- FILE HEADER ------------------------------------------
002
003 This file is part of deegree.
004 Copyright (C) 2001-2008 by:
005 EXSE, Department of Geography, University of Bonn
006 http://www.giub.uni-bonn.de/deegree/
007 lat/lon GmbH
008 http://www.lat-lon.de
009
010 This library is free software; you can redistribute it and/or
011 modify it under the terms of the GNU Lesser General Public
012 License as published by the Free Software Foundation; either
013 version 2.1 of the License, or (at your option) any later version.
014
015 This library is distributed in the hope that it will be useful,
016 but WITHOUT ANY WARRANTY; without even the implied warranty of
017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
018 Lesser General Public License for more details.
019
020 You should have received a copy of the GNU Lesser General Public
021 License along with this library; if not, write to the Free Software
022 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
023
024 Contact:
025
026 Andreas Poth
027 lat/lon GmbH
028 Aennchenstr. 19
029 53177 Bonn
030 Germany
031 E-Mail: poth@lat-lon.de
032
033 Prof. Dr. Klaus Greve
034 Department of Geography
035 University of Bonn
036 Meckenheimer Allee 166
037 53115 Bonn
038 Germany
039 E-Mail: greve@giub.uni-bonn.de
040
041
042 ---------------------------------------------------------------------------*/
043
044 package org.deegree.ogcwebservices.wpvs.operation;
045
046 import javax.media.j3d.PickSegment;
047 import javax.vecmath.Point3d;
048
049 import org.deegree.model.spatialschema.GeometryException;
050 import org.deegree.model.spatialschema.GeometryFactory;
051 import org.deegree.model.spatialschema.Position;
052 import org.deegree.ogcwebservices.wpvs.j3d.ViewPoint;
053
054 /**
055 * This class represents the geometry needed for a request with a ray of view.
056 *
057 * @version $Revision: $
058 * @author <a href="mailto:cordes@lat-lon.de">Lyn Buesching</a>
059 * @author last edited by: $Author: $
060 *
061 * @version 1.0. $Revision: $, $Date: $
062 *
063 */
064 public class LineRequest extends RequestGeometry {
065
066 // end point of the view ray
067 private Point3d endPointLine;
068
069 /**
070 * Initializes the two Geometrys for the request with a ray.
071 *
072 * @param request the Get3DFeatureInfo-request
073 * @throws GeometryException
074 */
075 public LineRequest(Get3DFeatureInfo request) {
076 super( request );
077 endPointLine = new Point3d ( calcEndPoint( new ViewPoint( request.getGetViewRequestCopy() ),
078 (int)request.getDepth(),
079 (int)request.getGetViewRequestCopy().getImageDimension().getWidth(),
080 (int)request.getGetViewRequestCopy().getImageDimension().getHeight(),
081 request.getClickPoint().x, request.getClickPoint().y ) );
082 }
083
084 @Override
085 public void setPickshape() {
086 pickshape = new PickSegment( getBeginPointLine(), endPointLine );
087 }
088
089 @Override
090 public void setWfsReqGeom() throws GeometryException {
091 Position p1 = GeometryFactory.createPosition( getBeginPointLine().x, getBeginPointLine().y, getBeginPointLine().z );
092 Position p2 = GeometryFactory.createPosition( endPointLine.x, endPointLine.y, endPointLine.z );
093 wfsReqGeom = GeometryFactory.createCurve( new Position[]{ p1, p2}, getCrs() );
094 }
095
096 public Point3d getEndPointLine() {
097 return endPointLine;
098 }
099
100
101 }