|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.j3d.utils.picking.PickIntersection
public class PickIntersection
Holds information about an intersection of a PickShape with a Node as part of a PickResult. Information about the intersected geometry, intersected primitive, intersection point, and closest vertex can be inquired.
The intersected geometry is indicated by an index into the list of geometry arrays on the PickResult. It can also be inquired from this object.
The intersected primitive indicates which primitive out of the GeometryArray
was intersected (where the primitive is a point, line, triangle or quad,
not a
com.sun.j3d.utils.geometry.Primitive)
.
For example, the intersection would indicate which triangle out of a
triangle strip was intersected.
The methods which return primitive data will have one value if the primitive
is
a point, two values if the primitive is a line, three values if the primitive
is a triangle and four values if the primitive is quad.
The primitive's VWorld coordinates are saved when then intersection is calculated. The local coordinates, normal, color and texture coordinates for the primitive can also be inquired if they are present and readable.
The intersection point is the location on the primitive which intersects the pick shape closest to the center of the pick shape. The intersection point's location in VWorld coordinates is saved when the intersection is calculated. The local coordinates, normal, color and texture coordiantes of at the intersection can be interpolated if they are present and readable.
The closest vertex is the vertex of the primitive closest to the intersection point. The vertex index, VWorld coordinates and local coordinates of the closest vertex can be inquired. The normal, color and texture coordinate of the closest vertex can be inquired from the geometry array:
Vector3f getNormal(PickIntersection pi, int vertexIndex) { int index; Vector3d normal = new Vector3f(); GeometryArray ga = pickIntersection.getGeometryArray(); if (pickIntersection.geometryIsIndexed()) { index = ga.getNormalIndex(vertexIndex); } else { index = vertexIndex; } ga.getNormal(index, normal); return normal; }
The color, normal
and texture coordinate information for the intersected primitive and the
intersection point
can be inquired
the geometry includes them and the corresponding READ capibility bits are
set.
PickTool.setCapabilties(Node, int)
can be used to set the capability bits
to allow this data to be inquired.
Field Summary | |
---|---|
(package private) Point3d |
closestVertexCoordinates
Coordinates of the closest vertex |
(package private) Point3d |
closestVertexCoordinatesVW
Coordinates of the closest vertex (World coordinates) |
(package private) int |
closestVertexIndex
Index of the closest vertex |
(package private) static boolean |
debug
|
(package private) double |
distance
Distance between start point and intersection point (see comment above) |
(package private) GeometryArray |
geom
|
(package private) int |
geomIndex
index of GeometryArray in PickResult |
(package private) boolean |
hasColors
|
(package private) boolean |
hasNormals
|
(package private) boolean |
hasTexCoords
|
(package private) IndexedGeometryArray |
iGeom
|
(package private) double[] |
interpWeights
Weight factors for interpolation, values correspond to vertex indices, sum == 1 |
(package private) PickResult |
pickResult
PickResult for intersection is part of |
(package private) Color4f |
pointColor
Color at the intersection point |
(package private) Point3d |
pointCoordinates
Local Coordinates of the intersection point |
(package private) Point3d |
pointCoordinatesVW
VWorld Coordinates of the intersection point |
(package private) Vector3f |
pointNormal
Normal at the intersection point |
(package private) TexCoord3f |
pointTexCoord
TexCoord at the intersection point |
(package private) int[] |
primitiveColorIndices
|
(package private) Color4f[] |
primitiveColors
|
(package private) int[] |
primitiveCoordinateIndices
|
(package private) Point3d[] |
primitiveCoordinates
|
(package private) Point3d[] |
primitiveCoordinatesVW
VWorld coordinates of intersected primitive |
(package private) int[] |
primitiveNormalIndices
|
(package private) Vector3f[] |
primitiveNormals
|
(package private) int[] |
primitiveTexCoordIndices
|
(package private) TexCoord3f[] |
primitiveTexCoords
|
(package private) int[] |
primitiveVertexIndices
Indices of the intersected primitive |
(package private) static double |
TOL
|
(package private) static int |
X_AXIS
|
(package private) static int |
Y_AXIS
|
(package private) static int |
Z_AXIS
|
Constructor Summary | |
---|---|
PickIntersection(PickResult pr,
GeometryArray geomArr)
Constructor |
Method Summary | |
---|---|
(package private) double |
abs(double value)
|
boolean |
geometryIsIndexed()
Returns true if the geometry is indexed |
Point3d |
getClosestVertexCoordinates()
Get coordinates of closest vertex (local) |
Point3d |
getClosestVertexCoordinatesVW()
Get coordinates of closest vertex (world) |
int |
getClosestVertexIndex()
Get index of closest vertex |
double |
getDistance()
Get the distance from the PickShape start point to the intersection point |
GeometryArray |
getGeometryArray()
Returns the GeometryArray for the intersection |
int |
getGeometryArrayIndex()
Returns the index of the intersected GeometryArray into the geometry arrays in the PickResult |
(package private) int |
getInterleavedColorOffset(GeometryArray geo)
|
(package private) int |
getInterleavedNormalOffset(GeometryArray geo)
|
(package private) int |
getInterleavedStride(GeometryArray geo)
|
(package private) int |
getInterleavedVertexOffset(GeometryArray geo)
|
private static float |
getInterpFactor(Point3d p,
Point3d p1,
Point3d p2,
int axis)
Calculate the interpolation factor for point p by projecting it along an axis (x,y,z) onto the edge between p1 and p2. |
private static float |
getInterpFactorForBase(Point3d p,
Point3d p1,
Point3d p2,
int axis)
Calculate the interpolation factor for point p by projecting it along an axis (x,y,z) onto the edge between p1 and p2. |
(package private) double[] |
getInterpWeights()
|
(package private) PickResult |
getPickResult()
Gets the PickResult this intersection is part of |
Color4f |
getPointColor()
Returns the color of the intersection point. |
Point3d |
getPointCoordinates()
Returns the coordinates of the intersection point (local coordinates), if available. |
Point3d |
getPointCoordinatesVW()
Returns the coordinates of the intersection point (world coordinates), if available. |
Vector3f |
getPointNormal()
Returns the normal of the intersection point. |
TexCoord3f |
getPointTextureCoordinate(int index)
Returns the texture coordinate of the intersection point at the specifed index in the specified texture coordinate set. |
int[] |
getPrimitiveColorIndices()
Get the color indices for the intersected primitive. |
Color4f[] |
getPrimitiveColors()
Get the colors of the intersected primitive. |
int[] |
getPrimitiveCoordinateIndices()
Get the coordinates indices for the intersected primitive. |
Point3d[] |
getPrimitiveCoordinates()
Get the local coordinates intersected primitive |
Point3d[] |
getPrimitiveCoordinatesVW()
Get VWorld coordinates of the intersected primitive |
int[] |
getPrimitiveNormalIndices()
Get the normal indices for the intersected primitive. |
Vector3f[] |
getPrimitiveNormals()
Get the normals of the intersected primitive. |
int[] |
getPrimitiveTexCoordIndices(int index)
Get the texture coordinate indices for the intersected primitive at the specifed index in the specified texture coordinate set. |
TexCoord3f[] |
getPrimitiveTexCoords(int index)
Get the texture coordinates of the intersected primitive at the specifed index in the specified texture coordinate set. |
int[] |
getPrimitiveVertexIndices()
Get vertex indices of the intersected primitive |
(package private) boolean |
interpTriangle(int index0,
int index1,
int index2,
Point3d[] coords,
Point3d intPt)
|
(package private) int |
maxAxis(Vector3d delta)
|
(package private) void |
setDistance(double dist)
Set the distance to intersection point |
(package private) void |
setGeomIndex(int gi)
Sets the geom index into the pick result |
(package private) void |
setPointCoordinatesVW(Point3d pt)
Sets the coordinates of the intersection point (world coordinates). |
(package private) void |
setPrimitiveCoordinatesVW(Point3d[] coords)
Set VWorld coordinates of the picked primtive |
(package private) void |
setVertexIndices(int[] verts)
Set vertex indices of primitive's vertices |
(package private) void |
storeClosestVertex()
Calculates and stores the closest vertex information |
java.lang.String |
toString()
String representation of this object |
(package private) java.lang.String |
toString2()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
PickResult pickResult
double distance
int geomIndex
int[] primitiveVertexIndices
Point3d[] primitiveCoordinatesVW
Point3d pointCoordinatesVW
GeometryArray geom
IndexedGeometryArray iGeom
boolean hasNormals
boolean hasColors
boolean hasTexCoords
int[] primitiveCoordinateIndices
int[] primitiveNormalIndices
int[] primitiveColorIndices
int[] primitiveTexCoordIndices
Point3d[] primitiveCoordinates
Vector3f[] primitiveNormals
Color4f[] primitiveColors
TexCoord3f[] primitiveTexCoords
Point3d pointCoordinates
Vector3f pointNormal
Color4f pointColor
TexCoord3f pointTexCoord
int closestVertexIndex
Point3d closestVertexCoordinates
Point3d closestVertexCoordinatesVW
double[] interpWeights
static final boolean debug
static final int X_AXIS
static final int Y_AXIS
static final int Z_AXIS
static final double TOL
Constructor Detail |
---|
PickIntersection(PickResult pr, GeometryArray geomArr)
pickResult
- The pickResult this intersection is part of.Method Detail |
---|
public java.lang.String toString()
toString
in class java.lang.Object
java.lang.String toString2()
PickResult getPickResult()
void setGeomIndex(int gi)
void setPointCoordinatesVW(Point3d pt)
pt
- the coordinatespublic Point3d getPointCoordinatesVW()
public double getDistance()
void setDistance(double dist)
dist
- the distance to the intersection pointvoid setPrimitiveCoordinatesVW(Point3d[] coords)
coords
- public Point3d[] getPrimitiveCoordinatesVW()
void setVertexIndices(int[] verts)
verts
- array of coordinate indicespublic int[] getPrimitiveVertexIndices()
public int getGeometryArrayIndex()
public GeometryArray getGeometryArray()
public boolean geometryIsIndexed()
public Point3d getClosestVertexCoordinates()
public Point3d getClosestVertexCoordinatesVW()
public int getClosestVertexIndex()
void storeClosestVertex()
public int[] getPrimitiveCoordinateIndices()
public Point3d[] getPrimitiveCoordinates()
int getInterleavedVertexOffset(GeometryArray geo)
int getInterleavedStride(GeometryArray geo)
int getInterleavedColorOffset(GeometryArray geo)
int getInterleavedNormalOffset(GeometryArray geo)
public int[] getPrimitiveNormalIndices()
public Vector3f[] getPrimitiveNormals()
public int[] getPrimitiveColorIndices()
public Color4f[] getPrimitiveColors()
public int[] getPrimitiveTexCoordIndices(int index)
public TexCoord3f[] getPrimitiveTexCoords(int index)
public Point3d getPointCoordinates()
public Vector3f getPointNormal()
public Color4f getPointColor()
public TexCoord3f getPointTextureCoordinate(int index)
double abs(double value)
int maxAxis(Vector3d delta)
boolean interpTriangle(int index0, int index1, int index2, Point3d[] coords, Point3d intPt)
double[] getInterpWeights()
private static float getInterpFactor(Point3d p, Point3d p1, Point3d p2, int axis)
private static float getInterpFactorForBase(Point3d p, Point3d p1, Point3d p2, int axis)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |