org.sunflow.core.primitive

Class CubeGrid

Implemented Interfaces:
PrimitiveList, RenderObject

public abstract class CubeGrid
extends java.lang.Object
implements PrimitiveList

Constructor Summary

CubeGrid()

Method Summary

BoundingBox
getBounds()
int
getNumPrimitives()
Returns the number of individual primtives in this aggregate object.
float
getPrimitiveBound(int primID, int i)
Retrieve the bounding box component of a particular primitive in object space.
BoundingBox
getWorldBounds(Matrix4 o2w)
Compute a bounding box of this object in world space, using the specified object-to-world transformation matrix.
protected abstract boolean
inside(int x, int y, int z)
void
intersectPrimitive(Ray r, int primID, IntersectionState state)
Intersect the specified primitive in local space.
void
prepareShadingState(ShadingState state)
Prepare the specified ShadingState by setting all of its internal parameters.
boolean
update(ParameterList pl, SunflowAPI api)

Constructor Details

CubeGrid

public CubeGrid()

Method Details

getBounds

public BoundingBox getBounds()

getNumPrimitives

public int getNumPrimitives()
Returns the number of individual primtives in this aggregate object.
Specified by:
getNumPrimitives in interface PrimitiveList
Returns:
number of primitives

getPrimitiveBound

public float getPrimitiveBound(int primID,
                               int i)
Retrieve the bounding box component of a particular primitive in object space. Even indexes get minimum values, while odd indexes get the maximum values for each axis.
Specified by:
getPrimitiveBound in interface PrimitiveList
Parameters:
primID - primitive index
i - bounding box side index
Returns:
value of the request bound

getWorldBounds

public BoundingBox getWorldBounds(Matrix4 o2w)
Compute a bounding box of this object in world space, using the specified object-to-world transformation matrix. The bounds should be as exact as possible, if they are difficult or expensive to compute exactly, you may use Matrix4.transform(BoundingBox). If the matrix is null no transformation is needed, and object space is equivalent to world space.
Specified by:
getWorldBounds in interface PrimitiveList
Parameters:
o2w - object to world transformation matrix
Returns:
object bounding box in world space

inside

protected abstract boolean inside(int x,
                                  int y,
                                  int z)

intersectPrimitive

public void intersectPrimitive(Ray r,
                               int primID,
                               IntersectionState state)
Intersect the specified primitive in local space.
Specified by:
intersectPrimitive in interface PrimitiveList
Parameters:
r - ray in the object's local space
primID - primitive index to intersect
state - intersection state

prepareShadingState

public void prepareShadingState(ShadingState state)
Prepare the specified ShadingState by setting all of its internal parameters.
Specified by:
prepareShadingState in interface PrimitiveList
Parameters:
state - shading state to fill in

update

public boolean update(ParameterList pl,
                      SunflowAPI api)
Specified by:
update in interface RenderObject