01: /*
02: * $RCSfile: PickShape.java,v $
03: *
04: * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
05: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
06: *
07: * This code is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU General Public License version 2 only, as
09: * published by the Free Software Foundation. Sun designates this
10: * particular file as subject to the "Classpath" exception as provided
11: * by Sun in the LICENSE file that accompanied this code.
12: *
13: * This code is distributed in the hope that it will be useful, but WITHOUT
14: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16: * version 2 for more details (a copy is included in the LICENSE file that
17: * accompanied this code).
18: *
19: * You should have received a copy of the GNU General Public License version
20: * 2 along with this work; if not, write to the Free Software Foundation,
21: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
22: *
23: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
24: * CA 95054 USA or visit www.sun.com if you need additional information or
25: * have any questions.
26: *
27: * $Revision: 1.5 $
28: * $Date: 2008/02/28 20:17:28 $
29: * $State: Exp $
30: */
31:
32: package javax.media.j3d;
33:
34: import javax.vecmath.Point4d;
35: import javax.vecmath.Point3d;
36:
37: /**
38: * An abstract class for describing a pick shape that can be used with
39: * the BranchGroup and Locale picking methods.
40: *
41: * @see BranchGroup#pickAll
42: * @see Locale#pickAll
43: */
44: public abstract class PickShape {
45:
46: // Use for picking
47: static final int PICKRAY = 1;
48: static final int PICKSEGMENT = 2;
49: static final int PICKPOINT = 3;
50: static final int PICKCYLINDER = 4;
51: static final int PICKCONE = 5;
52: static final int PICKBOUNDINGBOX = 6;
53: static final int PICKBOUNDINGSPHERE = 7;
54: static final int PICKBOUNDINGPOLYTOPE = 8;
55: static final int PICKUNKNOWN = 9;
56:
57: /**
58: * Constructs a PickShape object.
59: */
60: public PickShape() {
61: }
62:
63: /**
64: * Return true if shape intersect with bounds.
65: * The point of intersection is stored in pickPos.
66: */
67: abstract boolean intersect(Bounds bounds, Point4d pickPos);
68:
69: // Only use within J3D.
70: // Return a new PickShape that is the transformed (t3d) of this pickShape.
71: abstract PickShape transform(Transform3D t3d);
72:
73: // Get the start point use to compute the distance
74: // with intersect point for this shape.
75: abstract Point3d getStartPoint();
76:
77: // Return the distance between the original of this
78: // pickShape and iPnt
79: double distance(Point3d iPnt) {
80: Point3d p = getStartPoint();
81: double x = iPnt.x - p.x;
82: double y = iPnt.y - p.y;
83: double z = iPnt.z - p.z;
84: return Math.sqrt(x * x + y * y + z * z);
85: }
86:
87: // Return one of PickShape type constant define above
88: abstract int getPickType();
89:
90: }
|