import java.awt.Event;
import zBuffer;

public class Interactive extends zBuffer
{
  Matrix TRAFO=new Matrix();
  XYZ OldPT,NewPT;
  XYZ Y1,YM3,YM2,Y3,YT;
  RGB color,backcolor,toricolor;

public void init()
  {
    Resize(150,150);
    color=new RGB(0.5f,0.75f,1f);
    backcolor=new RGB(0.25f,0.1f,0.2f);
    toricolor=new RGB(0.5f,1f,0f);
    Y1=new XYZ(0f,-1f,0f);
    YM3=new XYZ(0f,3f,0f);
    YM2=new XYZ(0f,2f,0f);
    Y3=new XYZ(0f,-3f,0f);
    YT=new XYZ(0f,0.5f,0f);
    DrawScene();
  }

public void DrawScene()
  {
    int i;
    PushMatrix();
    Clear();
    SetBackground(backcolor);
    Scale(0.2f);
    Ring(YM3,Y1,3f,0f,color);
    Cone(YM3,YM2,3f,2f,color);
    Ring(YM2,Y1,2f,1f,color);
    Cylinder(YM2,Y1,1f,color);
    Cone(Y1,Y3,1f,0f,color);
    Torus(YT,Y1,2f,0.7f,toricolor);
    repaint();
    PopMatrix();
  }

public boolean handleEvent(Event e)
  {
    switch (e.id) {
    case Event.MOUSE_DOWN:
      OldPT=GetMousePosition(e);
    case Event.MOUSE_DRAG:
      NewPT=GetMousePosition(e);
      TRAFO=GetMatrix();
      ClearMatrix();
      RotateY(NewPT.x-OldPT.x);
      RotateX(OldPT.y-NewPT.y);
      MultMatrix(TRAFO);
      OldPT=new XYZ(NewPT);
      DrawScene();
      break;
    };
    return true;
  }

}
