Class Pyramid

    • Field Detail

      • faceCount

        protected int faceCount
      • subdivisions

        protected int subdivisions
    • Constructor Detail

      • Pyramid

        public Pyramid()
        Construct a Pyramid with default parameters
      • Pyramid

        public Pyramid​(Position centerPosition,
                       double height,
                       double width)
        Construct a Pyramid from a specified center position, height and width.
        Parameters:
        centerPosition - the Pyramid's center position.
        height - the Pyramid's height, in meters.
        width - the width of the Pyramid's base, in meters.
        Throws:
        java.lang.IllegalArgumentException - if the center position is null or any of the radii are not greater than 0.
      • Pyramid

        public Pyramid​(Position centerPosition,
                       double northSouthRadius,
                       double verticalRadius,
                       double eastWestRadius)
        Construct a Pyramid from a specified center position and axes lengths.
        Parameters:
        centerPosition - the Pyramid's center position.
        northSouthRadius - the Pyramid's north-south radius, in meters.
        verticalRadius - the Pyramid's vertical radius, in meters.
        eastWestRadius - the Pyramid's east-west radius, in meters.
        Throws:
        java.lang.IllegalArgumentException - if the center position is null or any of the radii are not greater than 0.
      • Pyramid

        public Pyramid​(Position centerPosition,
                       double northSouthRadius,
                       double verticalRadius,
                       double eastWestRadius,
                       Angle heading,
                       Angle tilt,
                       Angle roll)
        Construct a Pyramid from a specified center position, axes lengths and rotation angles. All angles are specified in degrees and positive angles are counter-clockwise.
        Parameters:
        centerPosition - the Pyramid's center position.
        northSouthRadius - the Pyramid's north-south radius, in meters.
        verticalRadius - the Pyramid's vertical radius, in meters.
        eastWestRadius - the Pyramid's east-west radius, in meters.
        heading - the Pyramid's azimuth, its rotation about its vertical axis.
        tilt - the Pyramid pitch, its rotation about its east-west axis.
        roll - the Pyramid's roll, its rotation about its north-south axis.
    • Method Detail

      • initialize

        protected void initialize()
        Description copied from class: AbstractShape
        Called during construction to establish any subclass-specific state such as different default values than those set by this class.
        Overrides:
        initialize in class RigidShape
      • getHeight

        public double getHeight()
        Returns the height of the Pyramid, which is just twice its vertical radius.
        Returns:
        this Pyramid's height.
      • setHeight

        public void setHeight​(double height)
        Specifies this Pyramid's height in meters. The height of the Pyramid is just twice its vertical radius, so we just divide the height by two to get the value for the verticalRadius. The height must be greater than 0.
        Parameters:
        height - the height of the Pyramid. Must be greater than 0.
        Throws:
        java.lang.IllegalArgumentException - if the height is not greater than 0.
      • setWidth

        public void setWidth​(double width)
        Specifies the width of the Pyramid's base in meters. The width of the Pyramid is just twice its base's north-south and east-west radii, so we just divide the width by two to get these values. The width must be greater than 0.
        Parameters:
        width - the width of the Pyramid. Must be greater than 0.
        Throws:
        java.lang.IllegalArgumentException - if the width is not greater than 0.
      • getFaceCount

        public int getFaceCount()
        Description copied from class: RigidShape
        Returns the number of separate faces that comprise this shape.
        Overrides:
        getFaceCount in class RigidShape
        Returns:
        number of faces
      • computeSubdivisions

        protected void computeSubdivisions​(DrawContext dc,
                                           RigidShape.ShapeData shapeData)
        Computes the number of subdivisions necessary to achieve the expected Level of Detail given the shape's relationship to the viewer.
        Specified by:
        computeSubdivisions in class RigidShape
        Parameters:
        dc - the current drawContext.
        shapeData - the current globe-specific shape data
      • makeGeometry

        protected void makeGeometry​(RigidShape.ShapeData shapeData)
        Sets the Geometry mesh for this Pyramid, either by pulling it from the geometryCache, or by creating it anew if the appropriate geometry does not yet exist in the cache.
        Specified by:
        makeGeometry in class RigidShape
        Parameters:
        shapeData - the current shape data.
      • makeUnitPyramid

        protected void makeUnitPyramid​(int subdivisions,
                                       java.util.List<Geometry> meshes)
        Generates a unit pyramid geometry, including the vertices, indices, normals and texture coordinates, tessellated with the specified number of divisions.
        Parameters:
        subdivisions - the number of times to subdivide the unit pyramid geometry
        meshes - the Geometry list to hold the computed points, etc. for all Geometries
      • drawGeometry

        protected void drawGeometry​(DrawContext dc,
                                    int mode,
                                    int count,
                                    int type,
                                    java.nio.Buffer elementBuffer,
                                    RigidShape.ShapeData shapeData,
                                    int face)
        Renders the Pyramid, using data from the provided buffer and the given parameters
        Specified by:
        drawGeometry in class RigidShape
        Parameters:
        dc - the current draw context
        mode - the render mode
        count - the number of elements to be drawn
        type - the data type of the elements to be drawn
        elementBuffer - the buffer containing the list of elements to be drawn
        shapeData - the current globe-specific shape data
        face - the index of the shape face to render
      • doExportAsKML

        protected void doExportAsKML​(javax.xml.stream.XMLStreamWriter xmlWriter)
                              throws java.io.IOException,
                                     javax.xml.stream.XMLStreamException
        Description copied from class: AbstractShape
        Exports shape-specific fields.
        Specified by:
        doExportAsKML in class AbstractShape
        Parameters:
        xmlWriter - the export writer to write to.
        Throws:
        java.io.IOException - if an IO error occurs while writing to the output destination.
        javax.xml.stream.XMLStreamException - if an exception occurs converting this shape's fields to XML.