m3g05
Class ModelTransformationsSample

java.lang.Object
  extended by javax.microedition.lcdui.Displayable
      extended by javax.microedition.lcdui.Canvas
          extended by javax.microedition.lcdui.game.GameCanvas
              extended by m3g05.ModelTransformationsSample
All Implemented Interfaces:
Sample

public class ModelTransformationsSample
extends javax.microedition.lcdui.game.GameCanvas
implements Sample

Sample displaying a cube that can be transformed interactively.

Author:
Claus Hoefele

Field Summary
private  int currentTransformation
          Current transformation.
private  javax.microedition.lcdui.Graphics graphics
          2D graphics singleton used for rendering.
private  javax.microedition.m3g.Graphics3D graphics3d
          3D graphics singleton used for rendering.
private  javax.microedition.m3g.Mesh mesh
          Mesh for display.
private  javax.microedition.m3g.Transform meshTransform
          The mesh's transformation.
private  boolean rotateBeforeTransform
          Flag for swapping order of rotation and translation.
private  float rotX
          Current rotation value.
private  float rotY
          Current rotation value.
private  float rotZ
          Current rotation value.
private  float scaleX
          Current scale value.
private  float scaleY
          Current scale value.
private  float scaleZ
          Current scale value.
private  float[] shearTransform
          Current shear matrix.
private static int TRANSFORMATION_ROTATE
          Indicates rotation.
private static int TRANSFORMATION_SCALE
          Indicates scaling.
private static int TRANSFORMATION_SHEAR
          Indicates shearing.
private static int TRANSFORMATION_TRANSLATE
          Indicates translation.
private static int TRANSFORMATION_X_AXIS
          Indicates transformation along x axis.
private static int TRANSFORMATION_Y_AXIS
          Indicates transformation along y axis.
private static int TRANSFORMATION_Z_AXIS
          Indicates transformation along z axis.
private  float transX
          Current translation value.
private  float transY
          Current translation value.
private  float transZ
          Current translation value.
 
Fields inherited from class javax.microedition.lcdui.game.GameCanvas
DOWN_PRESSED, FIRE_PRESSED, GAME_A_PRESSED, GAME_B_PRESSED, GAME_C_PRESSED, GAME_D_PRESSED, LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED
 
Fields inherited from class javax.microedition.lcdui.Canvas
DOWN, FIRE, GAME_A, GAME_B, GAME_C, GAME_D, KEY_NUM0, KEY_NUM1, KEY_NUM2, KEY_NUM3, KEY_NUM4, KEY_NUM5, KEY_NUM6, KEY_NUM7, KEY_NUM8, KEY_NUM9, KEY_POUND, KEY_STAR, LEFT, RIGHT, UP
 
Constructor Summary
ModelTransformationsSample()
          Constructor.
 
Method Summary
 void destroy()
          Destroys the sample.
private  void drawMenu(javax.microedition.lcdui.Graphics graphics)
          Draws a menu for the current key assignments.
 void init()
          Initializes the sample.
protected  void keyPressed(int keyCode)
          Handles key presses.
private  void render(javax.microedition.lcdui.Graphics graphics)
          Renders the sample.
private  void setTransformationValues(int transformation, int axis, boolean positiveDirection)
          Updates the current transformation values.
private  void transform(javax.microedition.m3g.Transform transform)
          Applies the current transformation values to the given Transform object.
 
Methods inherited from class javax.microedition.lcdui.game.GameCanvas
flushGraphics, flushGraphics, getGraphics, getKeyStates, paint
 
Methods inherited from class javax.microedition.lcdui.Canvas
getGameAction, getKeyCode, getKeyName, hasPointerEvents, hasPointerMotionEvents, hasRepeatEvents, hideNotify, isDoubleBuffered, keyReleased, keyRepeated, pointerDragged, pointerPressed, pointerReleased, repaint, repaint, serviceRepaints, setCommandListener, setFullScreenMode, showNotify, sizeChanged
 
Methods inherited from class javax.microedition.lcdui.Displayable
addCommand, getHeight, getTicker, getTitle, getWidth, isShown, removeCommand, setTicker, setTitle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rotX

private float rotX
Current rotation value.


rotY

private float rotY
Current rotation value.


rotZ

private float rotZ
Current rotation value.


transX

private float transX
Current translation value.


transY

private float transY
Current translation value.


transZ

private float transZ
Current translation value.


scaleX

private float scaleX
Current scale value.


scaleY

private float scaleY
Current scale value.


scaleZ

private float scaleZ
Current scale value.


shearTransform

private float[] shearTransform
Current shear matrix.


rotateBeforeTransform

private boolean rotateBeforeTransform
Flag for swapping order of rotation and translation.


mesh

private javax.microedition.m3g.Mesh mesh
Mesh for display.


meshTransform

private javax.microedition.m3g.Transform meshTransform
The mesh's transformation.


TRANSFORMATION_X_AXIS

private static final int TRANSFORMATION_X_AXIS
Indicates transformation along x axis.

See Also:
Constant Field Values

TRANSFORMATION_Y_AXIS

private static final int TRANSFORMATION_Y_AXIS
Indicates transformation along y axis.

See Also:
Constant Field Values

TRANSFORMATION_Z_AXIS

private static final int TRANSFORMATION_Z_AXIS
Indicates transformation along z axis.

See Also:
Constant Field Values

TRANSFORMATION_TRANSLATE

private static final int TRANSFORMATION_TRANSLATE
Indicates translation.

See Also:
Constant Field Values

TRANSFORMATION_ROTATE

private static final int TRANSFORMATION_ROTATE
Indicates rotation.

See Also:
Constant Field Values

TRANSFORMATION_SCALE

private static final int TRANSFORMATION_SCALE
Indicates scaling.

See Also:
Constant Field Values

TRANSFORMATION_SHEAR

private static final int TRANSFORMATION_SHEAR
Indicates shearing.

See Also:
Constant Field Values

currentTransformation

private int currentTransformation
Current transformation.


graphics3d

private javax.microedition.m3g.Graphics3D graphics3d
3D graphics singleton used for rendering.


graphics

private javax.microedition.lcdui.Graphics graphics
2D graphics singleton used for rendering.

Constructor Detail

ModelTransformationsSample

public ModelTransformationsSample()
Constructor.

Method Detail

init

public void init()
Initializes the sample.

Specified by:
init in interface Sample

destroy

public void destroy()
Destroys the sample.

Specified by:
destroy in interface Sample

render

private void render(javax.microedition.lcdui.Graphics graphics)
Renders the sample.

Parameters:
graphics - graphics context for rendering.

transform

private void transform(javax.microedition.m3g.Transform transform)
Applies the current transformation values to the given Transform object.

Parameters:
transform - Transform object

keyPressed

protected void keyPressed(int keyCode)
Handles key presses.

Overrides:
keyPressed in class javax.microedition.lcdui.Canvas
Parameters:
keyCode - key code.

setTransformationValues

private void setTransformationValues(int transformation,
                                     int axis,
                                     boolean positiveDirection)
Updates the current transformation values.

Parameters:
transformation - type of transformation.
axis - axis of translation.
positiveDirection - true for increasing, false for decreasing value.

drawMenu

private void drawMenu(javax.microedition.lcdui.Graphics graphics)
Draws a menu for the current key assignments.

Parameters:
graphics - graphics context for drawing.