- All Implemented Interfaces:
Transformation
,Pickable
,Renderable
,Manageable
,PersistenceCapable
,Shareable
,UserFields
,XObject
,Map
,Serializable
This class represents a frustum with a variable number of sectors for the top and bottom surface.
This radii for each sector is variable.
Primarily meant to represent a layer of a tree crown but can also be used generally as a 3D object.
- Since:
- 30.7.2013
- Author:
- yong
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class de.grogra.graph.impl.Node
Node.AccessorBridge, Node.FieldAttributeAccessor, Node.NType
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Node.NType
static final Node.NType.Field
protected float[]
static final Node.NType.Field
protected int
static final Node.NType.Field
static final Node.NType.Field
protected float[]
static final Node.NType.Field
Fields inherited from class de.grogra.imp3d.objects.FrustumBase
BASE_OPEN_MASK, TOP_OPEN_MASK, USED_BITS
Fields inherited from class de.grogra.imp3d.objects.Axis
endPosition, endPosition$FIELD, length, length$FIELD, startPosition, startPosition$FIELD
Fields inherited from class de.grogra.imp3d.objects.AxisBase
SCALE_V_MASK, scaleV$FIELD
Fields inherited from class de.grogra.imp3d.objects.ShadedNull
INFINITE_MASK, interior, interior$FIELD, renderAsWireframe, renderAsWireframe$FIELD, shader, shader$FIELD, treatedAsInfinite$FIELD
Fields inherited from class de.grogra.imp3d.objects.Null
transform, transform$FIELD, TRANSFORMING_MASK, transforming$FIELD
Fields inherited from class de.grogra.graph.impl.Node
ADDITIONAL_FIELDS, bits, DELETED, EXTENT_BIT, EXTENT_MASK, extentIndex$FIELD, extentTail$FIELD, HAS_OBSERVERS, IS_INTERPRETIVE, isInterpretive$FIELD, LAST_EXTENT_INDEX, layer$FIELD, MARK, mark$FIELD, MAX_RESOLUTION, MIME_TYPE, MIN_RESOLUTION, MIN_UNUSED_SPECIAL_OF_SOURCE, MIN_UNUSED_SPECIAL_OF_TARGET, name$FIELD, RESOLUTION_BIT, RESOLUTION_MASK, resolution$FIELD
Fields inherited from interface de.grogra.util.Map
DEFAULT_VALUE, EMPTY_MAP
-
Constructor Summary
ConstructorsConstructorDescriptionFrustumIrregular
(float len, int sectorCount, float[] baseRadii, float[] topRadii) FrustumIrregular
(int sectorCount, float[] baseRadii, float[] topRadii) -
Method Summary
Modifier and TypeMethodDescriptionvoid
draw
(Object object, boolean asNode, RenderState rs) float[]
protected Node.NType
This method returns theNode.NType
which describes the managed fields of the class of this node.int
double
Calculates the estimated surface area of this irregular frustum.float[]
double
Calculates the estimated volume of this irregular frustum.boolean
boolean
protected Node
This method returns a new instance of the class of this node.void
pick
(Object object, boolean asNode, Point3d origin, Vector3d direction, Matrix4d transformation, PickList list) Computes intersections of a given ray with this shape.float
void
resetRadii
(int sectorCount, float radiusValue) void
setBaseOpen
(boolean v) void
setBaseRadii
(float[] value) void
setBaseRadii
(int index, float value) void
setSectorCount
(int value) void
setTopOpen
(boolean v) void
setTopRadii
(float[] value) void
setTopRadii
(int index, float value) Methods inherited from class de.grogra.imp3d.objects.FrustumBase
pick
Methods inherited from class de.grogra.imp3d.objects.Axis
getEndPosition, getLength, getPivotShift, getStartPosition, postTransform, preTransform, setEndPoints, setEndPoints, setEndPoints, setEndPosition, setLength, setStartPosition
Methods inherited from class de.grogra.imp3d.objects.ShadedNull
getInterior, getShader, getSymbolColor, isRenderAsWireframe, isTreatedAsInfinite, setBackShader, setColor, setColor, setFrontShader, setInterior, setMaterial, setRenderAsWireframe, setShader, setShaders, setTreatedAsInfinite
Methods inherited from class de.grogra.imp3d.objects.Null
getLocalTransformation, getTransform, getTranslation, isTransforming, setRotation, setScale, setTransform, setTransform, setTransform, setTransform, setTransform, setTransform, setTransform, setTransform, setTransforming, setTranslation
Methods inherited from class de.grogra.graph.impl.Node
addEdgeBitsTo, addReference, appendBranchNode, appendBranchNode, appendReferencesTo, clone, clone, cloneGraph, dump, dumpTree, dup, dupFrom, dupnew, dupUnmanagedFields, edgeChanged, fieldModified, findAdjacent, findRefinementType, get, getAccessor, getAccessor, getAttributes, getAxisParent, getBoolean, getBranch, getBranchLength, getBranchNode, getBranchTail, getByte, getChar, getCommonAncestor, getCurrentGraphState, getDirectChildCount, getDouble, getEdgeAttributeAccessor, getEdgeAttributes, getEdgeBitsTo, getEdgeTo, getExtentIndex, getFirst, getFirstEdge, getFloat, getGraph, getId, getIgnored, getIndex, getInstantiator, getInt, getLayer, getLong, getManageableType, getName, getNeighbor, getNext, getNType, getObject, getOrCreateEdgeTo, getOrNull, getPersistenceManager, getPredecessor, getProvider, getResolution, getShort, getSource, getStamp, getSuccessor, getSymbol, getTarget, getTransaction, getUserField, getUserFieldCount, getXClass, getXData, hasName, initProvider, initXClass, insertBranchNode, insertBranchNode, instantiateGraph, isAncestorOf, isDirection, isEncoarseOf, isManagingInstance, isMarked, isRoot, isSource, isTarget, manageableReadResolve, manageableWriteReplace, paramString, removeAll, removeEdgeBitsTo, removeFromChain, removeFromChain, removeReference, setBranch, setBranch, setExtentIndex, setGraphForDeserialization, setIgnored, setLayer, setMark, setName, setResolution, setSuccessor, setSuccessor, specialEdgeAdded, specialEdgeRefModified, specialEdgeRemoved, toString, writeReplace
Methods inherited from class de.grogra.graph.impl.Edge
addEdgeBits, getBitMark, getEdgeBits, getEdgeKeys, getObjectMark, getSpecialEdgeDescriptor, parseEdgeKeys, remove, removeEdgeBits, setBitMark, setEdgeBits, setObjectMark, testEdgeBits
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface de.grogra.persistence.PersistenceCapable
getBitMark, getObjectMark, setBitMark, setObjectMark
-
Field Details
-
sectorCount
protected int sectorCount -
baseRadii
protected float[] baseRadii -
topRadii
protected float[] topRadii -
$TYPE
-
sectorCount$Field
-
baseRadii$FIELD
-
topRadii$FIELD
-
baseOpen$FIELD
-
topOpen$FIELD
-
-
Constructor Details
-
FrustumIrregular
public FrustumIrregular() -
FrustumIrregular
public FrustumIrregular(float len, int sectorCount, float[] baseRadii, float[] topRadii) -
FrustumIrregular
public FrustumIrregular(int sectorCount, float[] baseRadii, float[] topRadii)
-
-
Method Details
-
getNTypeImpl
Description copied from class:Node
This method returns theNode.NType
which describes the managed fields of the class of this node. This method has to be implemented in every concrete subclass.- Overrides:
getNTypeImpl
in classShadedNull
- Returns:
- type describing the managed fields of the class of this node
-
newInstance
Description copied from class:Node
This method returns a new instance of the class of this node. This method has to be implemented in every concrete subclass.- Overrides:
newInstance
in classShadedNull
- Returns:
- new instance of class of this node
-
draw
- Specified by:
draw
in interfaceRenderable
-
pick
public void pick(Object object, boolean asNode, Point3d origin, Vector3d direction, Matrix4d transformation, PickList list) Description copied from interface:Pickable
Computes intersections of a given ray with this shape.- Specified by:
pick
in interfacePickable
- Parameters:
object
- the object of which this shape is an attributeasNode
-true
iff object is a nodeorigin
- the origin of the ray, in local coordinatesdirection
- the direction of the ray, in local coordinatestransformation
- the transformation from local coordinates to world coordinateslist
- the list to which intersections have to be added
-
getSectorCount
public int getSectorCount() -
getBaseRadii
public float[] getBaseRadii() -
getTopRadii
public float[] getTopRadii() -
setSectorCount
public void setSectorCount(int value) -
setBaseRadii
public void setBaseRadii(float[] value) -
setTopRadii
public void setTopRadii(float[] value) -
setBaseRadii
public void setBaseRadii(int index, float value) -
setTopRadii
public void setTopRadii(int index, float value) -
isBaseOpen
public boolean isBaseOpen() -
setBaseOpen
public void setBaseOpen(boolean v) -
isTopOpen
public boolean isTopOpen() -
setTopOpen
public void setTopOpen(boolean v) -
resetRadii
public void resetRadii(int sectorCount, float radiusValue) -
radiusMax
public float radiusMax() -
getSurfaceArea
public double getSurfaceArea()Calculates the estimated surface area of this irregular frustum. Todo: returns 0- Overrides:
getSurfaceArea
in classShadedNull
- Returns:
- area
-
getVolume
public double getVolume()Calculates the estimated volume of this irregular frustum. Assumes area of sector changes linearly from bottom to top.- Overrides:
getVolume
in classShadedNull
- Returns:
- volume
-