package shears;

import java.applet.*;
import java.awt.*;

import psplot.*;
import real.*;

class Shear3Canvas extends ShearCanvas {
	public Shear3Canvas(Applet e, int w, int h,
			double B, double H, double S) {
		super(e, w, h, B, H, S);
		mkFixedPaths();
	}
	
	PlotPath rectangle;
	PlotPath top;
	PlotPath bottom;
	
	void mkFixedPaths() {
		rectangle = new PlotPath(this);
		top = new PlotPath(this);
		bottom = new PlotPath(this);
		
		rectangle.moveto(0,0);
		rectangle.lineto(0,ht);
		rectangle.lineto(b,ht);
		rectangle.lineto(b,0);
		rectangle.close();
		
		top.moveto(-4.5,ht);
		top.lineto(6.5,ht);

		bottom.moveto(-4.5,0);
		bottom.lineto(6.5,0);
	}

	int N = 12;
	
	public void draw() {
		ready = false;
		top.stroke(Color.black);
		bottom.stroke(Color.black);
		
		rectangle.fill(Color.cyan);
		
		double n = (double) N;
		
		PlotPath slice;
		slice = new PlotPath(this);
		for (int i=0;i<N;i++) {
			double y = (double) i*ht/n;
			// slice = new PlotPath(this);
			slice.moveto(0, y);
			slice.lineto(b, y);
			slice.lineto(b, y+ht/n);
			slice.lineto(0, y+ht/n);
			slice.lineto(0, y);
		}
		slice.stroke(Color.black);
		
		rectangle.stroke(Color.black);
		PlotPath parallelogram = new PlotPath(this);
		parallelogram.moveto(0,0);
		parallelogram.lineto(b,0);
		parallelogram.lineto(b+s,ht);
		parallelogram.lineto(s,ht);
		parallelogram.close();
		
		// parallelogram.fill(Color.blue);
		// parallelogram.stroke(Color.black);
		
		double inverseSlope = s/ht;
		
		for (int i=0;i<N;i++) {
			double y = (double) i*ht/n;
			double x = y*inverseSlope;
			slice = new PlotPath(this);
			slice.moveto(x, y);
			slice.lineto(x+b, y);
			slice.lineto(x+b, y+ht/n);
			slice.lineto(x, y+ht/n);
			slice.close();
			slice.fill(Color.blue);
			slice.stroke(Color.black);
		}
		cn.draw();
		ready = true;
	}
}

// -------------------------------------------------

public class Shear3Applet extends ShearApplet {
	
	public void init() {
		setLayout(new BorderLayout(0, 0));
		setBackground(Color.white);
		pic = new Shear3Canvas(this, bounds().width, bounds().height,
			b, h, s);
		add(pic);
		show();
	}
	
}
