Purpose: A class that rasterizes two-dimensional line segements, triangles, and convex polygons.
About the System: This class will be used by itself and by a 3D renderer (and, perhaps, other classes).
Details
Constants:
    public static final int        SCAN_LINE = 0;
    public static final int        POINTWISE = 1;
  
The Explicit Value Constructor:
    /**
     * Explicit Value Constructor
     *
     * @param fb   The FrameBuffer containing the pixels
     */
    public Rasterizer2D(FrameBuffer fb)
  
The clear() Method:
    /**
     * Fill the entire FrameBuffer with the given color
     */
    public void clear(Color c)
  
The drawLine() Method:
    /**
     * Draw the line segment connecting two points
     *
     * @param color  The Color
     * @param p      One point
     * @param q      The other point
     */
    public void drawLine(Color color, double[] p, double[] q)
  
This method must use either the DDA algorithm, the mid-point algorithm, Bresenham's algorithm, or the parametric form algorithm.
The drawPolygon() Method:
    /**
     * Draw the edges of a polygon
     *     
     *
     * @param color  The Color to use
     * @param r      The vertices of the polygon
     */
    public void drawPolygon(Color c, double[]... r)
  
  This method must call the drawLine() method
  iteratively.
  
The fillPolygon() Method:
    /**
     * Fill the polygon defined by the vertices in r
     *
     * @param color  The Color to use
     * @param r      The vertices of the polygon
     */
    public void fillPolygon(Color color, double[]... r)
  
  This method must call pointwiseFillPolygon()
  if the current fill technique is POINTWISE and
  must do nothing otherwise.
  
The fillTriangle() Method:
    /**
     * Fill the triangle defined by the vertices in r
     *
     * @param color  The Color to use
     * @param r      The vertices of the triangle
     */
    public void fillTriangle(Color color, double[]... r)
  
  This method must call pointwiseFillTriangle()
  if the current fill technique is POINTWISE and
  must do nothing otherwise.
  
The setFillTechnique() Method:
    /**
     * Set the fill technique to use
     *
     * @param fillTechnique   Either SCAN_LINE or POINTWISE
     */
    public void setFillTechnique(int fillTechnique)
  
This method must update the current fill technique (which is used by the fill methods).
The pointwiseFillPolygon() Method:
    /**
     * Fill a polygon by testing all of the points
     * in its bounding rectangle
     *
     * @param color  The Color to use
     * @param r      The vertices of the polygon
     */
    public void pointwiseFillPolygon(Color color, double[]... r)
  
This method must use the halfspace test algorithm.
The pointwiseFillTriangle() Method:
    /**
     * Fill a triangle point-by-point in the given color 
     *
     * @param color The color to use
     * @param r     The vertices of the triangle
     */
    public void pointwiseFillTriangle(Color color, double[]... r)
  
This method must use the signed area algorithm
Copyright 2007