com.sun.j3d.utils.pickfast

## Class PickIntersection

- java.lang.Object
- - com.sun.j3d.utils.pickfast.PickIntersection

-     public class PickIntersection
      extends java.lang.Object

  Holds information about an intersection of a PickShape with a Node as part of a PickInfo.IntersectionInfo. Information about the intersected geometry, intersected primitive, intersection point, and closest vertex can be inquired.

  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.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PickIntersection(Transform3D localToVWorld, PickInfo.IntersectionInfo intersectionInfo)` Constructor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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
    `PickInfo.IntersectionInfo` | `getIntersectionInfo()` Gets the IntersectionInfo 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
    `java.lang.String` | `toString()` String representation of this object

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### PickIntersection

          public PickIntersection(Transform3D localToVWorld,
                          PickInfo.IntersectionInfo intersectionInfo)

      Constructor
      Parameters:
        `intersectionInfo` - The IntersectionInfo this intersection is part of.

  - ### Method Detail

    - #### geometryIsIndexed

          public boolean geometryIsIndexed()

      Returns true if the geometry is indexed

    - #### getClosestVertexCoordinates

          public Point3d getClosestVertexCoordinates()

      Get coordinates of closest vertex (local)
      Returns:
        the coordinates of the vertex closest to the intersection point

    - #### getClosestVertexCoordinatesVW

          public Point3d getClosestVertexCoordinatesVW()

      Get coordinates of closest vertex (world)
      Returns:
        the coordinates of the vertex closest to the intersection point

    - #### getClosestVertexIndex

          public int getClosestVertexIndex()

      Get index of closest vertex
      Returns:
        the index of the closest vertex

    - #### getDistance

          public double getDistance()

      Get the distance from the PickShape start point to the intersection point
      Returns:
        the distance to the intersection point, if available.

    - #### getPointColor

          public Color4f getPointColor()

      Returns the color of the intersection point. Returns null if the geometry does not contain colors. If the geometry was defined with GeometryArray.COLOR_3, the 'w' component of the color will initialized to 1.0
      Returns:
        color at the intersection point.

    - #### getPointCoordinates

          public Point3d getPointCoordinates()

      Returns the coordinates of the intersection point (local coordinates), if available.
      Returns:
        coordinates of the intersection point

    - #### getPointCoordinatesVW

          public Point3d getPointCoordinatesVW()

      Returns the coordinates of the intersection point (world coordinates), if available.
      Returns:
        coordinates of the point

    - #### getPointNormal

          public Vector3f getPointNormal()

      Returns the normal of the intersection point. Returns null if the geometry does not contain normals.
      Returns:
        normal at the intersection point.

    - #### getPointTextureCoordinate

          public TexCoord3f getPointTextureCoordinate(int index)

      Returns the texture coordinate of the intersection point at the specifed index in the specified texture coordinate set. Returns null if the geometry does not contain texture coordinates. If the geometry was defined with GeometryArray.TEXTURE_COORDINATE_3, the 'z' component of the texture coordinate will initialized to 0.0
      Returns:
        texture coordinate at the intersection point.

    - #### getPrimitiveColorIndices

          public int[] getPrimitiveColorIndices()

      Get the color indices for the intersected primitive. For a non-indexed primitive, this will be the same as the primitive vertex indices If the geometry array does not contain colors this will return null.
      Returns:
        an array indices

    - #### getPrimitiveColors

          public Color4f[] getPrimitiveColors()

      Get the colors of the intersected primitive. This will return null if the primitive does not contain colors. If the geometry was defined using GeometryArray.COLOR_3, the 'w' value of the color will be set to 1.0.
      Returns:
        an array of Point3d's for the primitive that was intersected

    - #### getPrimitiveCoordinateIndices

          public int[] getPrimitiveCoordinateIndices()

      Get the coordinates indices for the intersected primitive. For a non-indexed primitive, this will be the same as the primitive vertex indices
      Returns:
        an array indices

    - #### getPrimitiveCoordinates

          public Point3d[] getPrimitiveCoordinates()

      Get the local coordinates intersected primitive
      Returns:
        an array of Point3d's for the primitive that was intersected

    - #### getPrimitiveCoordinatesVW

          public Point3d[] getPrimitiveCoordinatesVW()

      Get VWorld coordinates of the intersected primitive
      Returns:
        an array of Point3d's for the primitive that was picked

    - #### getPrimitiveNormalIndices

          public int[] getPrimitiveNormalIndices()

      Get the normal indices for the intersected primitive. For a non-indexed primitive, this will be the same as the primitive vertex indices If the geometry array does not contain normals this will return null
      Returns:
        an array indices

    - #### getPrimitiveNormals

          public Vector3f[] getPrimitiveNormals()

      Get the normals of the intersected primitive. This will return null if the primitive does not contain normals.
      Returns:
        an array of Point3d's for the primitive that was intersected

    - #### getPrimitiveTexCoordIndices

          public int[] getPrimitiveTexCoordIndices(int index)

      Get the texture coordinate indices for the intersected primitive at the specifed index in the specified texture coordinate set. For a non-indexed primitive, this will be the same as the primitive vertex indices If the geometry array does not contain texture coordinates, this will return null.
      Returns:
        an array indices

    - #### getPrimitiveTexCoords

          public TexCoord3f[] getPrimitiveTexCoords(int index)

      Get the texture coordinates of the intersected primitive at the specifed index in the specified texture coordinate set. null if the primitive does not contain texture coordinates. If the geometry was defined using GeometryArray.TEXTURE_COORDINATE_2, the 'z' value of the texture coordinate will be set to 0.0.
      Returns:
        an array of TexCoord3f's for the primitive that was intersected

    - #### getPrimitiveVertexIndices

          public int[] getPrimitiveVertexIndices()

      Get vertex indices of the intersected primitive
      Returns:
        an array which contains the list of indices

    - #### getIntersectionInfo

          public PickInfo.IntersectionInfo getIntersectionInfo()

      Gets the IntersectionInfo this intersection is part of.

    - #### toString

          public java.lang.String toString()

      String representation of this object
      Overrides:
        `toString` in class `java.lang.Object`

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.