package threearms;
import java.awt.*;
import primitives.machines.MachineException;
class ConstraintedSpaceUp extends MachineSpace{
	public Point state;
	double alpha;
	
	boolean upper;
	public 	ConstraintedSpaceUp(Canvas drawArea,MachineSpace Dual,boolean upper){
		super(drawArea,Dual);
		state = new Point(0,0);
		this.upper = upper;
		if (upper) alpha=Math.PI*3/2;
		else alpha = (Math.PI/2);
		dAlpha = Math.PI*dual.dAlpha/(2*(dual.angles[2]-dual.angles[1]));
	}
	public void redraw(Graphics g){
		Dimension dm = this.drawArea.getSize();
		int d = Math.min(dm.width,dm.height);
		g.setColor(Color.black);
		if(upper)
			g.drawArc(2,2,d-4,d-4,90,-178);
		else g.drawArc(2,2,d-4,d-4,91,178);
		g.setColor(Color.green);
		g.fillOval(state.x-3,state.y-3,6,6);
	}
	Point p = new Point();
	public void keyTyped(int key)throws MachineException{
		Dimension dm = this.drawArea.getSize();
		int d = Math.min(dm.width,dm.height)/2;
		switch(key){
		case 1:alpha=alpha+dAlpha;break;
		case -1: alpha=alpha-dAlpha;break;
		}
		p.move(d,d);
		state = Geomtry.getPointByVector(p,d-2,alpha);
	}
//	public void mouseClicked(int x,int y){}
	public void finalize() throws Throwable{
		state = null;
		p = null;
		super.finalize();
	}
}