com.sun.j3d.utils.geometry

## Class Cone

- java.lang.Object
- - javax.media.j3d.SceneGraphObject
  - - javax.media.j3d.Node
    - - javax.media.j3d.Group
      - - com.sun.j3d.utils.geometry.Primitive
        - - com.sun.j3d.utils.geometry.Cone

-     public class Cone
      extends Primitive

  Cone is a geometry primitive defined with a radius and a height. It is a capped cone centered at the origin with its central axis aligned along the Y-axis. The center of the cone is defined to be the center of its bounding box (rather than its centroid).

  If the GENERATE_TEXTURE_COORDS flag is set, the texture coordinates are generated such that the texture gets mapped onto the cone similarly to how it gets mapped onto a cylinder, the difference being the top cap is nonexistent.

  By default all primitives with the same parameters share their geometry (e.g., you can have 50 shperes in your scene, but the geometry is stored only once). A change to one primitive will effect all shared nodes. Another implication of this implementation is that the capabilities of the geometry are shared, and once one of the shared nodes is live, the capabilities cannot be set. Use the GEOMETRY_NOT_SHARED flag if you do not wish to share geometry among primitives with the same parameters.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `BODY` Designates the body of the cone.
    `static int` | `CAP` Designates the end-cap of the cone.

    - ### Fields inherited from class com.sun.j3d.utils.geometry.Primitive

      `ENABLE_APPEARANCE_MODIFY, ENABLE_GEOMETRY_PICKING, GENERATE_NORMALS, GENERATE_NORMALS_INWARD, GENERATE_TEXTURE_COORDS, GENERATE_TEXTURE_COORDS_Y_UP, GEOMETRY_NOT_SHARED`

    - ### Fields inherited from class javax.media.j3d.Group

      `ALLOW_CHILDREN_EXTEND, ALLOW_CHILDREN_READ, ALLOW_CHILDREN_WRITE, ALLOW_COLLISION_BOUNDS_READ, ALLOW_COLLISION_BOUNDS_WRITE`

    - ### Fields inherited from class javax.media.j3d.Node

      `ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_LOCALE_READ, ALLOW_PARENT_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Cone()` Constructs a default Cone of radius of 1.0 and height of 2.0.
    `Cone(float radius, float height)` Constructs a default Cone of a given radius and height.
    `Cone(float radius, float height, Appearance ap)` Constructs a default cone of a given radius, height, and appearance.
    `Cone(float radius, float height, int primflags, Appearance ap)` Constructs a default cone of a given radius, height, primitive flags, and appearance.
    `Cone(float radius, float height, int primflags, int xdivision, int ydivision, Appearance ap)` Constructs a customized Cone of a given radius, height, flags, resolution (X and Y dimensions), and appearance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Node` | `cloneNode(boolean forceDuplicate)` Used to create a new instance of the node.
    `void` | `duplicateNode(Node originalNode, boolean forceDuplicate)` Copies all node information from `originalNode` into the current node.
    `Appearance` | `getAppearance(int partId)` Gets the appearance of the specified part of the cone.
    `float` | `getHeight()` Returns the height of the cone
    `float` | `getRadius()` Returns the radius of the cone
    `Shape3D` | `getShape(int partId)` Obtains the Shape3D node associated with one of the parts of the cone (the body or the cap).
    `int` | `getXdivisions()` Returns the number divisions along the X direction
    `int` | `getYdivisions()` Returns the number of divisions along the height of the cone
    `void` | `setAppearance(Appearance ap)` Sets appearance of the cone.

    - ### Methods inherited from class com.sun.j3d.utils.geometry.Primitive

      `cacheGeometry, clearGeometryCache, getAppearance, getCachedGeometry, getNumTriangles, getNumVertices, getPrimitiveFlags, setAppearance, setAppearance, setNumTriangles, setNumVertices, setPrimitiveFlags`

    - ### Methods inherited from class javax.media.j3d.Group

      `addChild, getAllChildren, getAlternateCollisionTarget, getChild, getCollisionBounds, indexOfChild, insertChild, moveTo, numChildren, removeAllChildren, removeChild, removeChild, setAlternateCollisionTarget, setChild, setCollisionBounds`

    - ### Methods inherited from class javax.media.j3d.Node

      `cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, getBounds, getBoundsAutoCompute, getCollidable, getLocale, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable`

    - ### Methods inherited from class javax.media.j3d.SceneGraphObject

      `clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

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

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

- - ### Field Detail

    - #### BODY

          public static final int BODY

      Designates the body of the cone. Used by `getShape`.
      See Also:
        `getShape(int)`, Constant Field Values

    - #### CAP

          public static final int CAP

      Designates the end-cap of the cone. Used by `getShape`.
      See Also:
        `getShape(int)`, Constant Field Values

  - ### Constructor Detail

    - #### Cone

          public Cone()

      Constructs a default Cone of radius of 1.0 and height of 2.0. Resolution defaults to 15 divisions along X and axis and 1 along the Y axis. Normals are generated, texture coordinates are not.

    - #### Cone

          public Cone(float radius,
              float height)

      Constructs a default Cone of a given radius and height. Normals are generated, texture coordinates are not.
      Parameters:
        `radius` - Radius
        `height` - Height

    - #### Cone

          public Cone(float radius,
              float height,
              Appearance ap)

      Constructs a default cone of a given radius, height, and appearance. Normals are generated, texture coordinates are not.
      Parameters:
        `radius` - Radius
        `height` - Height
        `ap` - Appearance
      Since:
        Java 3D 1.2.1

    - #### Cone

          public Cone(float radius,
              float height,
              int primflags,
              Appearance ap)

      Constructs a default cone of a given radius, height, primitive flags, and appearance.
      Parameters:
        `radius` - Radius
        `height` - Height
        `primflags` - Primitive flags
        `ap` - Appearance

    - #### Cone

          public Cone(float radius,
              float height,
              int primflags,
              int xdivision,
              int ydivision,
              Appearance ap)

      Constructs a customized Cone of a given radius, height, flags, resolution (X and Y dimensions), and appearance. The resolution is defined in terms of number of subdivisions along the object's X axis (width) and Y axis (height). More divisions lead to finer tesselated objects.

      If appearance is null, the default white appearance will be used.

      Parameters:
        `radius` - Radius
        `height` - Height
        `xdivision` - Number of divisions along X direction.
        `ydivision` - Number of divisions along the height of cone.
        `primflags` - flags
        `ap` - Appearance

  - ### Method Detail

    - #### getShape

          public Shape3D getShape(int partId)

      Obtains the Shape3D node associated with one of the parts of the cone (the body or the cap). This allows users to modify the appearance or geometry of individual parts.
      Specified by:
        `getShape` in class `Primitive`
      Parameters:
        `partId` - The part to return (BODY or CAP).
      Returns:
        The Shape3D object associated with the partId. If an invalid partId is passed in, null is returned.

    - #### setAppearance

          public void setAppearance(Appearance ap)

      Sets appearance of the cone. This will set each part of the cone (cap & body) to the same appearance. To set each part's appearance separately, use getShape(partId) to get the individual shape and call shape.setAppearance(ap).
      Specified by:
        `setAppearance` in class `Primitive`

    - #### getAppearance

          public Appearance getAppearance(int partId)

      Gets the appearance of the specified part of the cone.
      Specified by:
        `getAppearance` in class `Primitive`
      Parameters:
        `partId` - identifier for a given subpart of the cone
      Returns:
        The appearance object associated with the partID. If an invalid partId is passed in, null is returned.
      Since:
        Java 3D 1.2.1

    - #### cloneNode

          public Node cloneNode(boolean forceDuplicate)

      Used to create a new instance of the node. This routine is called by `cloneTree` to duplicate the current node. `cloneNode` should be overridden by any user subclassed objects. All subclasses must have their `cloneNode` method consist of the following lines:

      >          public Node cloneNode(boolean forceDuplicate) {
      >              UserSubClass usc = new UserSubClass();
      >              usc.duplicateNode(this, forceDuplicate);
      >              return usc;
      >          }

      Overrides:
        `cloneNode` in class `Group`
      Parameters:
        `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
      See Also:
        `Node.cloneTree()`, `Node.duplicateNode(javax.media.j3d.Node, boolean)`, `NodeComponent.setDuplicateOnCloneTree(boolean)`

    - #### duplicateNode

          public void duplicateNode(Node originalNode,
                           boolean forceDuplicate)

      Copies all node information from `originalNode` into the current node. This method is called from the `cloneNode` method which is, in turn, called by the `cloneTree` method.

      For any NodeComponent objects contained by the object being duplicated, each NodeComponent object's `duplicateOnCloneTree` value is used to determine whether the NodeComponent should be duplicated in the new node or if just a reference to the current node should be placed in the new node. This flag can be overridden by setting the `forceDuplicate` parameter in the `cloneTree` method to `true`.

      Overrides:
        `duplicateNode` in class `Node`
      Parameters:
        `originalNode` - the original node to duplicate.
        `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
      See Also:
        `Node.cloneTree()`, `Node.cloneNode(boolean)`, `NodeComponent.setDuplicateOnCloneTree(boolean)`

    - #### getRadius

          public float getRadius()

      Returns the radius of the cone
      Since:
        Java 3D 1.2.1

    - #### getHeight

          public float getHeight()

      Returns the height of the cone
      Since:
        Java 3D 1.2.1

    - #### getXdivisions

          public int getXdivisions()

      Returns the number divisions along the X direction
      Since:
        Java 3D 1.2.1

    - #### getYdivisions

          public int getYdivisions()

      Returns the number of divisions along the height of the cone
      Since:
        Java 3D 1.2.1

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