import renderer.framebuffer.*;
import renderer.pipeline.*;
import renderer.scene.*;

public class SquareHinged
{
   public static void main(String[] args)
   {
      Scene scene = new Scene();
      Model square = new Model();
      scene.addModel(square);

      Vertex v0 = new Vertex(0, 0, -2);
      Vertex v1 = new Vertex(1, 0, -2);
      Vertex v2 = new Vertex(1, 1, -2);
      Vertex v3 = new Vertex(0, 1, -2);

      square.addVertex(v0, v1, v2, v2, v3); // notice that the upper right
                                            // hand corner is duplicated
      square.addLineSegment(0, 1);
      square.addLineSegment(1, 2); // the right and top edges do not share
      square.addLineSegment(3, 4); // the upper right hand corner vertex
      square.addLineSegment(4, 0);

      FrameBuffer fb = new FrameBuffer(600, 600);

      Pipeline.render(scene, fb);
      fb.dumpFB2File("SquareHinged_1.ppm");

      // Make a "movie".
      for (int j = 2; j <= 10; j++)
      {
         // Open the square on its right edge.
         square.vertexList.get(2).x += 0.1;

         // render again
         fb.clearFB();
         Pipeline.render(scene, fb);
         fb.dumpFB2File("SquareHinged_" + j + ".ppm");
      }
   }
}
