cz.cuni.jagrlib.piece
Class Plane

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultSolid
              extended by cz.cuni.jagrlib.piece.Plane
All Implemented Interfaces:
Breakable, Property, Solid, IntersectionAttributes, Template

public class Plane
extends DefaultSolid

Plane objects (infinite plane, rectangle, triangle) as elementary 3D solids.

See Also:
Plane.java

Field Summary
protected  boolean canonicU
          Use canonic u coordinate (=x)?
protected  boolean canonicV
          Use canonic v coordinate (=y)?
static RegPiece reg
          Static registration instance for this class.
protected  double scaleU
          Scale coefficient for u coordinate.
protected  double scaleV
          Scale coefficient for v coordinate.
protected  boolean triangle
          Use three restrictions instead of four (the 3rd one is: xMax * x + yMax * y < 1.0).
protected  double xMax
          Upper bound for x coordinate (or see triangle).
protected  double xMin
          Lower bound for x coordinate.
protected  double yMax
          Upper bound for y coordinate (or see triangle).
protected  double yMin
          Lower bound for y coordinate.
 
Fields inherited from class cz.cuni.jagrlib.DefaultSolid
CATEGORY, TEMPLATE_NAME
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
Plane()
          Infinite plane.
Plane(double xMa, double yMa)
          Triangle (three restrictions).
Plane(double xMi, double xMa, double yMi, double yMa)
          Rectangle (four restrictions).
 
Method Summary
 int assertAttributes(MicroFacet mf, java.lang.Object tmp, int attributes)
          Asserts validity of the given intersection-attributes.
 java.util.List<MicroFacet> intersection(double[] P0, double[] P1)
          Computes intersection of the solid with the given ray.
 boolean isInside(double[] point)
          Point vs. solid test ("inside-test").
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 
Methods inherited from class cz.cuni.jagrlib.DefaultSolid
createPolyhedr, getBoundingVolume
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, get, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit, get, set
 

Field Detail

xMin

protected double xMin
Lower bound for x coordinate.


xMax

protected double xMax
Upper bound for x coordinate (or see triangle).


yMin

protected double yMin
Lower bound for y coordinate.


yMax

protected double yMax
Upper bound for y coordinate (or see triangle).


triangle

protected boolean triangle
Use three restrictions instead of four (the 3rd one is: xMax * x + yMax * y < 1.0).


canonicU

protected boolean canonicU
Use canonic u coordinate (=x)?


canonicV

protected boolean canonicV
Use canonic v coordinate (=y)?


scaleU

protected double scaleU
Scale coefficient for u coordinate.


scaleV

protected double scaleV
Scale coefficient for v coordinate.


reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

Plane

public Plane()
Infinite plane.


Plane

public Plane(double xMi,
             double xMa,
             double yMi,
             double yMa)
Rectangle (four restrictions).


Plane

public Plane(double xMa,
             double yMa)
Triangle (three restrictions).

Method Detail

intersection

public java.util.List<MicroFacet> intersection(double[] P0,
                                               double[] P1)
Computes intersection of the solid with the given ray.

Parameters:
P0 - Ray origin (double[3] or double[4]).
P1 - Direction vector of the ray (double[3] or double[4]).
Returns:
List of intersection points (MicroFacets) sorted by t (parametric distance from P0). null is returned in case of bad arguments or if no intersection exists..
See Also:
MicroFacet, BoundingVolume

assertAttributes

public int assertAttributes(MicroFacet mf,
                            java.lang.Object tmp,
                            int attributes)
Asserts validity of the given intersection-attributes. Resolves: VALID_TANGENT, VALID_TEX_COORD.

Specified by:
assertAttributes in interface IntersectionAttributes
Overrides:
assertAttributes in class DefaultSolid
Parameters:
mf - The checked intersection.
tmp - Non-mandatory object holding state-information for deferred computations.
attributes - Attribute mask (required attributes - see MicroFacet.VALID_*).
Returns:
Attributes which were not computed.

isInside

public boolean isInside(double[] point)
Point vs. solid test ("inside-test").

Specified by:
isInside in interface Solid
Overrides:
isInside in class DefaultSolid
Parameters:
point - Coordinates of the 3D point (double[3] or double[4]).
Returns:
true if the given point lies inside the solid.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.