org.jzy3d.plot3d.rendering.view
Class Camera

java.lang.Object
  extended by org.jzy3d.plot3d.rendering.view.Camera

public class Camera
extends java.lang.Object

A Camera provides an easy control on the view and target points in a cartesian coordinate system. The Camera handles the following services:

Author:
Martin Pernollet

Constructor Summary
Camera(Coord3d target)
          Set up a Camera looking at target, with a viewpoint standing at target+(0,0,100).
 
Method Summary
 void doShoot(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, CameraMode projection)
           
 Coord3d getEye()
          Returns the eye's position.
 float getFar()
          Return the position of the "far" clipping plane
 float getNear()
          Return the position of the "near" clipping plane
 java.awt.Rectangle getRectangle()
          Returns the (x,y) offset that was applied to make this AbstractViewport stand in the appropriate canvas part.
 float getRenderingSphereRadius()
          Return the radius of the sphere that will be contained into the rendered view.
 boolean getStretchToFill()
           
 Coord3d getTarget()
          Returns the target's position that was set at the last call to lookAt().
 Coord3d getUp()
          Returns the top of the camera.
 boolean isTiltUp()
           
 java.util.ArrayList<java.util.ArrayList<Coord3d>> modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, java.util.ArrayList<java.util.ArrayList<Coord3d>> polygons)
           
 Coord3d modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, Coord3d point)
          Transform a 3d point coordinate into its screen position.
 Coord3d[] modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, Coord3d[] points)
           
 Coord3d[][] modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, Coord3d[][] points)
           
 java.util.List<Coord3d> modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, java.util.List<Coord3d> points)
           
 PolygonArray modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, PolygonArray polygon)
           
 PolygonArray[][] modelToScreen(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, PolygonArray[][] polygons)
           
 Coord3d screenToModel(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, Coord3d screen)
          Transform a 2d screen coordinate into a 3d coordinate.
 void setEye(Coord3d eye)
          Set the eye's position.
 void setRenderingDepth(float near, float far)
          Manually set the rendering depth (near and far clipping planes).
 void setRenderingSphereRadius(float radius)
          Set the radius of the sphere that will be contained into the rendered view.
 void setScreenGridDisplayed(boolean status)
          Set the status of the screen grid.
 void setStretchToFill(boolean status)
          Set the status of the stretching mode (activated or not).
 void setTarget(Coord3d target)
          Set the target point of the camera.
 void setUp(Coord3d up)
          Set the top of the camera.
 void setViewPort(int width, int height)
          Set the view port (size of the renderer).
 void setViewPort(int width, int height, float left, float right)
          Set the view port (size of the renderer).
 void shoot(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, CameraMode projection)
          Sets the projection, and the mapping of 3d environement to 2d screen.
 void shoot(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, CameraMode projection, boolean doPushMatrixBeforeShooting)
           
 boolean side(Coord3d point)
          Return true if the given point is on the left of the vector eye->target.
 java.lang.String toString()
          Print out in console information concerning the surface.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Camera

public Camera(Coord3d target)
Set up a Camera looking at target, with a viewpoint standing at target+(0,0,100). The top of the camera is set up toward the positive Z direction.

Method Detail

setEye

public void setEye(Coord3d eye)
Set the eye's position.


getEye

public Coord3d getEye()
Returns the eye's position.


setTarget

public void setTarget(Coord3d target)
Set the target point of the camera.


getTarget

public Coord3d getTarget()
Returns the target's position that was set at the last call to lookAt().


setUp

public void setUp(Coord3d up)
Set the top of the camera.


getUp

public Coord3d getUp()
Returns the top of the camera.


isTiltUp

public boolean isTiltUp()

setRenderingSphereRadius

public void setRenderingSphereRadius(float radius)
Set the radius of the sphere that will be contained into the rendered view. As a side effect, the "far" clipping plane is modified according to the eye-target distance, and the position of the "near" clipping plane.


getRenderingSphereRadius

public float getRenderingSphereRadius()
Return the radius of the sphere that will be contained into the rendered view.


setRenderingDepth

public void setRenderingDepth(float near,
                              float far)
Manually set the rendering depth (near and far clipping planes). Note that Camera.setRenderingSphereRadius modified the "far" clipping plane.


getNear

public float getNear()
Return the position of the "near" clipping plane


getFar

public float getFar()
Return the position of the "far" clipping plane


side

public boolean side(Coord3d point)
Return true if the given point is on the left of the vector eye->target.


screenToModel

public Coord3d screenToModel(javax.media.opengl.GL gl,
                             javax.media.opengl.glu.GLU glu,
                             Coord3d screen)
Transform a 2d screen coordinate into a 3d coordinate. The z component of the screen coordinate indicates a depth value between the near and far clipping plane of the Camera.

Throws:
a - RuntimeException if an error occured while trying to retrieve model coordinates

modelToScreen

public Coord3d modelToScreen(javax.media.opengl.GL gl,
                             javax.media.opengl.glu.GLU glu,
                             Coord3d point)
Transform a 3d point coordinate into its screen position.

Throws:
a - RuntimeException if an error occured while trying to retrieve model coordinates

modelToScreen

public Coord3d[] modelToScreen(javax.media.opengl.GL gl,
                               javax.media.opengl.glu.GLU glu,
                               Coord3d[] points)

modelToScreen

public Coord3d[][] modelToScreen(javax.media.opengl.GL gl,
                                 javax.media.opengl.glu.GLU glu,
                                 Coord3d[][] points)

modelToScreen

public java.util.List<Coord3d> modelToScreen(javax.media.opengl.GL gl,
                                             javax.media.opengl.glu.GLU glu,
                                             java.util.List<Coord3d> points)

modelToScreen

public java.util.ArrayList<java.util.ArrayList<Coord3d>> modelToScreen(javax.media.opengl.GL gl,
                                                                       javax.media.opengl.glu.GLU glu,
                                                                       java.util.ArrayList<java.util.ArrayList<Coord3d>> polygons)

modelToScreen

public PolygonArray modelToScreen(javax.media.opengl.GL gl,
                                  javax.media.opengl.glu.GLU glu,
                                  PolygonArray polygon)

modelToScreen

public PolygonArray[][] modelToScreen(javax.media.opengl.GL gl,
                                      javax.media.opengl.glu.GLU glu,
                                      PolygonArray[][] polygons)

shoot

public void shoot(javax.media.opengl.GL gl,
                  javax.media.opengl.glu.GLU glu,
                  CameraMode projection)
Sets the projection, and the mapping of 3d environement to 2d screen. The projection must be either Camera.PERSPECTIVE or Camera.ORTHOGONAL.
Finally calls the GL function glLookAt, according to the stored eye, target, up and scale values.
Note that the Camera set by itselft the MatrixMode to model view at the end of a shoot().

Parameters:
gl - GL context.
glu - GLU context.
projection - the projection mode.
Throws:
a - Runtime Exception if the projection mode is neither Camera.PERSPECTIVE nor Camera.ORTHOGONAL.

shoot

public void shoot(javax.media.opengl.GL gl,
                  javax.media.opengl.glu.GLU glu,
                  CameraMode projection,
                  boolean doPushMatrixBeforeShooting)

doShoot

public void doShoot(javax.media.opengl.GL gl,
                    javax.media.opengl.glu.GLU glu,
                    CameraMode projection)

toString

public java.lang.String toString()
Print out in console information concerning the surface.

Overrides:
toString in class java.lang.Object

setStretchToFill

public void setStretchToFill(boolean status)
Set the status of the stretching mode (activated or not). Stretching consist in displaying the projection into the full screen slice (i.e. viewport).

Parameters:
status -

getStretchToFill

public boolean getStretchToFill()

setViewPort

public void setViewPort(int width,
                        int height)
Set the view port (size of the renderer).

Parameters:
width - the width of the target window.
height - the height of the target window.

setViewPort

public void setViewPort(int width,
                        int height,
                        float left,
                        float right)
Set the view port (size of the renderer).

Parameters:
width - the width of the target window.
height - the height of the target window.
left - the width's ratio where this subscreen starts in the target window.
right - the width's ratio where this subscreen stops in the target window.
Throws:
an - IllegalArgumentException if right is not greater than left.

getRectangle

public java.awt.Rectangle getRectangle()
Returns the (x,y) offset that was applied to make this AbstractViewport stand in the appropriate canvas part. and the actual width and height of the viewport. Only relevant after a call to applyViewPort.


setScreenGridDisplayed

public void setScreenGridDisplayed(boolean status)
Set the status of the screen grid.

Parameters:
status - the grid is displayed if status is set to true