Homework 4: Nested Transformations and Cameras

View a previous version with less Animation Hierarchy and a more dramatic Camera Model.

NOTE: To toggle between filled and drawn shapes, click display once.

Francis Kirigin   Novice Animator, Matrix Transformations Enthusiast

Implemented :
(Newer additions followed by dependent, unmodified modules)
Projection3D.java (new)
  - Created for use as a Matrix Transformation Manager object, Projection3D performs necessary transformation calculations needed for projecting three-dimensional coordinates onto a two-dimensional plane.
  - In addition to matrix manipulations for rudimentary 3D graphics, this version also provides modeling of "Flying Camera" implemention, stack-based management of animation frame transforms, and simple application data management of coordinates and generated matrices.

NOTE: Screen-specific handling for conversions of coordinate data is reserved at the application layer.

Flying.java (new)
  - Top-layer of animation application. Creates 3D shape objects and modifies contained vertices by using stack-based matrix transforms to apply modifications.
Class Flying extends from: BufferedApplet.java

Shape3D.java
  - Significantly augmented from previous release, Shape3D is the generic base class managing data structures critical for 3D projection, as well as generic shape functionality non-specific to derived implementations.

Cube.java
  - Derived from class Shape3D, implementation dedicated primarily as rough 3D modeling tool for drawing Polygons. Supports basic graphic manipulation for 3D conversion from a 2D representation, performed via rudimentary, shape-specific Linear Transformations on contained matrix points. Structured off class Matrix3D design.

Cylinder.java
  - Derived from class Shape3D also, and intended for rough 3D modeling for drawing cylinders.
 Class Cube, Cylinder: Extend from: Matrix3D.java

Matrix3D.java
  - Implementation for storage of 3D Matrices representing coordinate points, manipulation via Linear Transformations API

BufferedApplet.java Foreign Source (Unmodified)
  - Provided by Professor Ken Perlin.