de.grogra.gpuflux.scene.volume
Class FluxVolumeBuilder

java.lang.Object
  extended by de.grogra.imp3d.VolumeBuilderBase
      extended by de.grogra.gpuflux.scene.volume.FluxVolumeBuilder
All Implemented Interfaces:
RenderState

public abstract class FluxVolumeBuilder
extends VolumeBuilderBase
implements RenderState

Author:
Dietger van Antwerpen

Field Summary
 
Fields inherited from class de.grogra.imp3d.VolumeBuilderBase
epsilon, polyCache
 
Fields inherited from interface de.grogra.imp3d.RenderState
CURRENT_HIGHLIGHT
 
Constructor Summary
FluxVolumeBuilder(GraphState state, float flatness)
           
 
Method Summary
protected abstract  void addInfinitePrimitive(FluxPrimitive prim)
           
protected abstract  void addPrimitive(FluxPrimitive prim)
           
protected abstract  void addPrimitives(java.util.Vector<FluxPrimitive> primitives)
           
 void drawBox(float halfWidth, float halfLength, float height, Shader s, int highlight, Matrix4d t)
           
 void drawFrustum(float height, float baseRadius, float topRadius, boolean baseClosed, boolean topClosed, float scaleV, Shader s, int highlight, Matrix4d t)
           
 void drawLine(Tuple3f start, Tuple3f end, Tuple3f color, int highlight, Matrix4d t)
           
 void drawParallelogram(float length, Vector3f faxis, float scaleU, float scaleV, Shader s, int highlight, Matrix4d t)
           
 void drawPlane(Shader s, int highlight, Matrix4d t)
           
 void drawPoint(Tuple3f location, int pixelSize, Tuple3f color, int highlight, Matrix4d t)
           
 void drawPointCloud(float[] locations, float pointSize, Tuple3f color, int highlight, Matrix4d t)
          Draw a set of points.
 void drawPolygons(Polygonizable polygons, java.lang.Object obj, boolean asNode, Shader s, int highlight, Matrix4d t)
           
 void drawRectangle(int x, int y, int w, int h, Tuple3f color)
           
 void drawSphere(float radius, Shader s, int highlight, Matrix4d t)
           
 void drawString(int x, int y, java.lang.String text, java.awt.Font font, Tuple3f color)
           
 void drawSupershape(float a, float b, float m1, float n11, float n12, float n13, float m2, float n21, float n22, float n23, Shader s, int highlight, Matrix4d t)
          Draw a supershape around the origin (0/0/0).
 float estimateScaleAt(Tuple3f point)
           
 void fillRectangle(int x, int y, int w, int h, Tuple3f color)
           
 void finish()
           
 int getCurrentHighlight()
           
 Shader getCurrentShader()
           
 java.awt.FontMetrics getFontMetrics(java.awt.Font font)
           
 Pool getPool()
           
 GraphState getRenderGraphState()
           
 java.util.Vector<FluxVertex> getVertices()
           
 boolean getWindowPos(Tuple3f location, Tuple2f out)
          Computes the window coordinates in pixels of a location in the current object coordinates.
 void setVertices(java.util.Vector<FluxVertex> vertices)
           
 
Methods inherited from class de.grogra.imp3d.VolumeBuilderBase
buildBaseFrustum, buildBox, buildFrustum, buildParallelogram, buildPlane, buildPolygons, buildSphere, buildSupershape, getCurrentTransformation, getTransformation, setInvTransformation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FluxVolumeBuilder

public FluxVolumeBuilder(GraphState state,
                         float flatness)
Method Detail

addInfinitePrimitive

protected abstract void addInfinitePrimitive(FluxPrimitive prim)

addPrimitive

protected abstract void addPrimitive(FluxPrimitive prim)

addPrimitives

protected abstract void addPrimitives(java.util.Vector<FluxPrimitive> primitives)

drawBox

public void drawBox(float halfWidth,
                    float halfLength,
                    float height,
                    Shader s,
                    int highlight,
                    Matrix4d t)
Specified by:
drawBox in interface RenderState

drawFrustum

public void drawFrustum(float height,
                        float baseRadius,
                        float topRadius,
                        boolean baseClosed,
                        boolean topClosed,
                        float scaleV,
                        Shader s,
                        int highlight,
                        Matrix4d t)
Specified by:
drawFrustum in interface RenderState

drawLine

public void drawLine(Tuple3f start,
                     Tuple3f end,
                     Tuple3f color,
                     int highlight,
                     Matrix4d t)
Specified by:
drawLine in interface RenderState

drawParallelogram

public void drawParallelogram(float length,
                              Vector3f faxis,
                              float scaleU,
                              float scaleV,
                              Shader s,
                              int highlight,
                              Matrix4d t)
Specified by:
drawParallelogram in interface RenderState

drawPlane

public void drawPlane(Shader s,
                      int highlight,
                      Matrix4d t)
Specified by:
drawPlane in interface RenderState

drawPoint

public void drawPoint(Tuple3f location,
                      int pixelSize,
                      Tuple3f color,
                      int highlight,
                      Matrix4d t)
Specified by:
drawPoint in interface RenderState

drawPointCloud

public void drawPointCloud(float[] locations,
                           float pointSize,
                           Tuple3f color,
                           int highlight,
                           Matrix4d t)
Description copied from interface: RenderState
Draw a set of points. The array locations contains a sequence of points given as triples of floats for x, y and z position of each point. If the same reference for the array location is passed in the implementation might assume that the contents of the array are the same as well. This is necessary for GLDisplay, for instance, to ensure a performant implementation. The class PointCloud ensures that this is the case.

Specified by:
drawPointCloud in interface RenderState
Parameters:
locations - array containing a sequence (x,y,z) of points
pointSize - size of the point on screen
color - color of the point
t - transformation of the point cloud

drawPolygons

public void drawPolygons(Polygonizable polygons,
                         java.lang.Object obj,
                         boolean asNode,
                         Shader s,
                         int highlight,
                         Matrix4d t)
Specified by:
drawPolygons in interface RenderState

drawRectangle

public void drawRectangle(int x,
                          int y,
                          int w,
                          int h,
                          Tuple3f color)
Specified by:
drawRectangle in interface RenderState

drawSphere

public void drawSphere(float radius,
                       Shader s,
                       int highlight,
                       Matrix4d t)
Specified by:
drawSphere in interface RenderState

drawString

public void drawString(int x,
                       int y,
                       java.lang.String text,
                       java.awt.Font font,
                       Tuple3f color)
Specified by:
drawString in interface RenderState

drawSupershape

public void drawSupershape(float a,
                           float b,
                           float m1,
                           float n11,
                           float n12,
                           float n13,
                           float m2,
                           float n21,
                           float n22,
                           float n23,
                           Shader s,
                           int highlight,
                           Matrix4d t)
Description copied from interface: RenderState
Draw a supershape around the origin (0/0/0). An implementation of Johan Gielis's Superformula which was published in the American Journal of Botany 90(3): 333–338. 2003. INVITED SPECIAL PAPER A GENERIC GEOMETRIC TRANSFORMATION THAT UNIFIES A WIDE RANGE OF NATURAL AND ABSTRACT SHAPES

Specified by:
drawSupershape in interface RenderState
t - transformation of the point cloud

estimateScaleAt

public float estimateScaleAt(Tuple3f point)
Specified by:
estimateScaleAt in interface RenderState

fillRectangle

public void fillRectangle(int x,
                          int y,
                          int w,
                          int h,
                          Tuple3f color)
Specified by:
fillRectangle in interface RenderState

finish

public void finish()

getCurrentHighlight

public int getCurrentHighlight()
Specified by:
getCurrentHighlight in interface RenderState

getCurrentShader

public Shader getCurrentShader()
Specified by:
getCurrentShader in interface RenderState

getFontMetrics

public java.awt.FontMetrics getFontMetrics(java.awt.Font font)
Specified by:
getFontMetrics in interface RenderState

getPool

public Pool getPool()
Specified by:
getPool in interface RenderState

getRenderGraphState

public GraphState getRenderGraphState()
Specified by:
getRenderGraphState in interface RenderState

getVertices

public java.util.Vector<FluxVertex> getVertices()

getWindowPos

public boolean getWindowPos(Tuple3f location,
                            Tuple2f out)
Description copied from interface: RenderState
Computes the window coordinates in pixels of a location in the current object coordinates.

Specified by:
getWindowPos in interface RenderState
Parameters:
location - a location in local object coordinates
out - the computed window coordinates are placed in here
Returns:
true iff the window coordinates are valid (i.e., the location is in the clipping region)

setVertices

public void setVertices(java.util.Vector<FluxVertex> vertices)