com.sun.j3d.utils.geometry

## Class Sphere

- 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.Sphere

-     public class Sphere
      extends Primitive

  Sphere is a geometry primitive created with a given radius and resolution. It is centered at the origin.

  When a texture is applied to a Sphere, it is mapped CCW from the back of the sphere.

  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` Sphere shape identifier, used by `getShape`.

    - ### 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
    `Sphere()` Constructs a default Sphere of radius of 1.0.
    `Sphere(float radius)` Constructs a Sphere of a given radius.
    `Sphere(float radius, Appearance ap)` Constructs a Sphere of a given radius and appearance.
    `Sphere(float radius, int primflags, Appearance ap)` Constructs a Sphere of a given radius and appearance with additional parameters specified by the Primitive flags.
    `Sphere(float radius, int primflags, int divisions)` Constructs a Sphere of a given radius and number of divisions with additional parameters specified by the Primitive flags.
    `Sphere(float radius, int primflags, int divisions, Appearance ap)` Constructs a customized Sphere of a given radius, number of divisions, and appearance, with additional parameters specified by the Primitive flags.

  - ### 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 sphere.
    `int` | `getDivisions()` Returns the number of divisions
    `float` | `getRadius()` Returns the radius of the sphere
    `Shape3D` | `getShape()` Obtains Sphere's shape node that contains the geometry.
    `Shape3D` | `getShape(int partId)` Obtains Sphere's shape node that contains the geometry.
    `void` | `setAppearance(Appearance ap)` Sets appearance of the Sphere.

    - ### 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

      Sphere shape identifier, used by `getShape`.
      See Also:
        `getShape(int)`, Constant Field Values

  - ### Constructor Detail

    - #### Sphere

          public Sphere(float radius)

      Constructs a Sphere of a given radius. Normals are generated by default, texture coordinates are not. The resolution defaults to 15 divisions along sphere's axes. Appearance defaults to white.
      Parameters:
        `radius` - Radius

    - #### Sphere

          public Sphere()

      Constructs a default Sphere of radius of 1.0. Normals are generated by default, texture coordinates are not. Resolution defaults to 15 divisions. Appearance defaults to white.

    - #### Sphere

          public Sphere(float radius,
                Appearance ap)

      Constructs a Sphere of a given radius and appearance. Normals are generated by default, texture coordinates are not.
      Parameters:
        `radius` - Radius
        `ap` - Appearance

    - #### Sphere

          public Sphere(float radius,
                int primflags,
                Appearance ap)

      Constructs a Sphere of a given radius and appearance with additional parameters specified by the Primitive flags.
      Parameters:
        `radius` - Radius
        `primflags` -
        `ap` - appearance

    - #### Sphere

          public Sphere(float radius,
                int primflags,
                int divisions)

      Constructs a Sphere of a given radius and number of divisions with additional parameters specified by the Primitive flags. Appearance defaults to white.
      Parameters:
        `radius` - Radius
        `divisions` - Divisions
        `primflags` - Primflags

    - #### Sphere

          public Sphere(float radius,
                int primflags,
                int divisions,
                Appearance ap)

      Constructs a customized Sphere of a given radius, number of divisions, and appearance, with additional parameters specified by the Primitive flags. The resolution is defined in terms of number of subdivisions along the sphere's axes. More divisions lead to more finely tesselated objects.

      If the appearance is null, the sphere defaults to a white appearance.

  - ### Method Detail

    - #### getShape

          public Shape3D getShape(int partId)

      Obtains Sphere's shape node that contains the geometry. This allows users to modify the appearance or geometry.
      Specified by:
        `getShape` in class `Primitive`
      Parameters:
        `partId` - The part to return (must be BODY for Spheres)
      Returns:
        The Shape3D object associated with the partId. If an invalid partId is passed in, null is returned.

    - #### getShape

          public Shape3D getShape()

      Obtains Sphere's shape node that contains the geometry.

    - #### setAppearance

          public void setAppearance(Appearance ap)

      Sets appearance of the Sphere.
      Specified by:
        `setAppearance` in class `Primitive`

    - #### getAppearance

          public Appearance getAppearance(int partId)

      Gets the appearance of the specified part of the sphere.
      Specified by:
        `getAppearance` in class `Primitive`
      Parameters:
        `partId` - identifier for a given subpart of the sphere
      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 sphere
      Since:
        Java 3D 1.2.1

    - #### getDivisions

          public int getDivisions()

      Returns the number of divisions
      Since:
        Java 3D 1.2.1

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