import java.awt.*;
import java.util.*;
import java.io.*;

public class ThreeDView extends Canvas implements Runnable {
  Vector points = new Vector();
  ThreeDView 3dv;
  private Image offScreenImage;
  private Graphics offScreenGraphics;
  private Dimension offScreenSize;
  double angle1=0.0, angle2=0.0;

  public static void main(String arg[]){
    new ThreeDView();
  }

  ThreeDView () {
    Frame f = new Frame();
        f.setBounds(0,0,500,500);
    f.add(this);
    f.pack();
    f.show();
    (new Thread(this)).start();
  }

  public void run() {
        BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st;
    while (true){
      String coords = new String("");
      double lat, lon;
      try { coords = in.readLine(); } catch (Exception e) { } 
      if(coords == null){
	continue;
      }
      st = new StringTokenizer(coords); 
      x = (Double.valueOf(st.nextToken())).doubleValue();
      y = (Double.valueOf(st.nextToken())).doubleValue();
      z = Double.valueOf(st.nextToken()).doubleValue();
      points.addElement(new 3DPoint(x, y, z));
    }
    while(true){
      repaint();
      try { Thread.sleep(100); } catch (Exception e) { }
      angle1 += .01;
      angle2 += .01;
    }
  }

  public final synchronized void update (Graphics theG)
    {
      Dimension d = size();
      if((offScreenImage == null) || (d.width != offScreenSize.width) ||
         (d.height != offScreenSize.height)) 
        {
          offScreenImage = createImage(d.width, d.height);
          offScreenSize = d;
          offScreenGraphics = offScreenImage.getGraphics();
          offScreenGraphics.setFont(getFont());
        }
      offScreenGraphics.fillRect(0,0,d.width, d.height);
      paint(offScreenGraphics);
      theG.drawImage(offScreenImage, 0, 0, null);
    }

  public void paint (Graphics g){
    int ct=0;
    g.setColor(Color.black);
    for(Enumeration e = recentLocations.elements(); e.hasMoreElements(); ){
      GPSLocation gl;
      ct++;
      gl = ((GPSLocation) e.nextElement());
      gl.draw(g);
    }
    g.setColor(Color.gray);
  }

}

class ThreeDPoint {
  double x, y, z;

  ThreeDPoint(double l1, double l2){
    lat = l1;
    lon = l2;
  }

  public void draw(Graphics g){
    double projx, projy;
    projx = x*Math.cos(angle1) + z*Math.sin(angle1);
    projy = y*Math.cos(angle2) + z*math.sin(angle2);
    g.drawArc((int) (500-projx), (int) (500-projy), 2, 2, 0, 360);
  }
}
