import java.awt.*;

class DrawPad extends Canvas {
	Image offScrImg;
	Graphics gr;
	Rhcs cs;
	int m,i,j,oldx,oldy;
	Tocka T1,T2,pt,t;
	Premica p;
	Ravnina rv;
	
	DrawPad(int m,int i,int j,Tocka Dp,Tocka Dn) {
		resize(m,m);
		setBackground(Color.lightGray);
		validate();
		cs = new Rhcs(Dp,Dn);
		this.i = i;
		this.j = j;
		this.m = m;
	}
    void set(Tocka P1,Tocka P2) {
		T1 = new Tocka(P1);
		T2 = new Tocka(P2);
   		p = new Premica(P1,P2,cs);
		if(rv != null) pt = p.intersec(rv);
	    repaint();
	}
	void set(Tocka P1,Vektor V) {
		T1 = new Tocka(P1);
		T2 = null;
   		p = new Premica(P1,V,cs);
		if(rv != null) pt = p.intersec(rv);
	    repaint();
	}
	void set(float x1,float y1,float z1,
					float x2,float y2,float z2) {
		T1 = new Tocka(x1,y1,z1);
		T2 = new Tocka(x2,y2,z2);
   		p = new Premica(x1,y1,z1,x2,y2,z2,cs);
		if(rv != null) pt = p.intersec(rv);
	    repaint();
	}
	void set(Tocka P[]) {
		rv = new Ravnina(P);
		if(p != null) pt = p.intersec(rv);
	    repaint();
	}
	void clear() {
		T1 = null;
		T2 = null;
		p = null;
		rv = null;
		pt = null;
		repaint();
    }
    public boolean mouseDown(Event e, int x, int y) {
		oldx = x;
		oldy = y;
		return false;
    }
	public void update(Graphics g) {
    	offScrImg.getGraphics().clearRect(0,0,m,m);
		cs.draw2D(gr,i,j,m,m,0,0);
		if(T1 != null) T1.draw2D(gr,i,j,m/2,m/2,Color.black);
		if(T2 != null) T2.draw2D(gr,i,j,m/2,m/2,Color.black);
   		if(p != null) p.draw2D(gr,i,j,m/2,m/2);
		if(pt != null) pt.draw2D(gr,i,j,m/2,m/2,Color.magenta);
		paint(g);
	}
    public void paint(Graphics g) {
		if(offScrImg == null) {
			offScrImg = createImage(m,m);
			gr = offScrImg.getGraphics();
			cs.draw2D(gr,i,j,m,m,0,0);
		}
		g.drawImage(offScrImg,0,0,null);
	}
}
