package rebelsky.newvec; import java.io.PrintWriter; /** * Something that willingly helps with a variety of tasks. * * @author Samuel A. Rebelsky * @version 1.0 of September 2004 */ public class GraduateAssistant { // +--------+-------------------------------------------------- // | Fields | // +--------+ /** * The pen the assistant uses to write everything. */ PrintWriter pen; // +--------------+-------------------------------------------- // | Constructors | // +--------------+ /** * Create a new assistant that uses a particular pen. */ public GraduateAssistant(PrintWriter _pen) { this.pen = _pen; } // GraduateAssistant(PrintWriter) // +---------+------------------------------------------------- // | Methods | // +---------+ /** * Print a message that depends on the closeness of a vector * to the origin. */ public void checkClose(Vec2D vec) { if ((Math.abs(vec.getX()) > 0.1) || (Math.abs(vec.getY()) > 0.1)) { pen.println("Not near the origin."); } else { pen.println("Near the origin."); } } // checkClose(Vec2D) /** * Describe a two dimensional vector. */ public void describe(Vec2D vec) { pen.println("Self description: " + vec.toString()); pen.println("(x,y): (" + vec.getX() + "," + vec.getY() +")"); pen.println("theta: " + vec.getAngle()); pen.println("radius: " + vec.getRadius()); } // describe(Vec2D) /** * Describe something that can be expressed as a real number. */ public void describeR(CanBeExpressedAsARealNumber r) { pen.println(r.toString() + " can be expressed as " + r.asReal()); } // describeR(CanBeExpressedAsARealNumber) /** * Test a two dimensional vector in a variety of ways. */ public void test(Vec2D vec) { pen.println("*** Original ***"); this.describe(vec); pen.println("***** Unit *****"); this.describe(vec.unitVector()); pen.println("** Rotate pi/4 **"); this.describe(vec.rotate(Math.PI/4.0)); pen.println("** Rotate pi/2 **"); this.describe(vec.rotate(Math.PI/2.0)); pen.println("*** Rotate pi ***"); this.describe(vec.rotate(Math.PI)); } // test(Vec2D) } // class GraduateAssistant