Package org.sunflow.core.primitive

# Class Plane

java.lang.Object
org.sunflow.core.primitive.Plane

All Implemented Interfaces:
  `PrimitiveList`, `RenderObject`

public class Plane extends Object implements PrimitiveList

## Constructor Summary

Constructors
Constructor
Description
`Plane()`

## Method Summary

Modifier and Type
Method
Description
`PrimitiveList`
`getBakingPrimitives()`
Create a new `PrimitiveList` object suitable for baking lightmaps.
`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.
`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)`
Update this object given a list of parameters.

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

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

## Constructor Details

### Plane

public Plane()

## Method Details

### update

public boolean update(ParameterList pl, SunflowAPI api)
Description copied from interface: `RenderObject`
Update this object given a list of parameters. This method is guarenteed to be called at least once on every object, but it should correctly handle empty parameter lists. This means that the object should be in a valid state from the time it is constructed. This method should also return true or false depending on whether the update was succesfull or not.

Specified by:
  `update` in interface `RenderObject`
Parameters:
  `pl` - list of parameters to read from
  `api` - reference to the current scene
Returns:
  `true` if the update is succesfull, `false` otherwise

### prepareShadingState

public void prepareShadingState(ShadingState state)
Description copied from interface: `PrimitiveList`
Prepare the specified `ShadingState` by setting all of its internal parameters.

Specified by:
  `prepareShadingState` in interface `PrimitiveList`
Parameters:
  `state` - shading state to fill in

### intersectPrimitive

public void intersectPrimitive(Ray r, int primID, IntersectionState state)
Description copied from interface: `PrimitiveList`
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
See Also:
  - `Ray.setMax(float)`
  - `IntersectionState.setIntersection(int, float, float)`

### getNumPrimitives

public int getNumPrimitives()
Description copied from interface: `PrimitiveList`
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)
Description copied from interface: `PrimitiveList`
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)
Description copied from interface: `PrimitiveList`
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

### getBakingPrimitives

public PrimitiveList getBakingPrimitives()
Description copied from interface: `PrimitiveList`
Create a new `PrimitiveList` object suitable for baking lightmaps. This means a set of primitives laid out in the unit square UV space. This method is optional, objects which do not support it should simply return `null`.

Specified by:
  `getBakingPrimitives` in interface `PrimitiveList`
Returns:
  a list of baking primitives