import javax.swing.*; import java.awt.Color; import java.awt.Graphics2D; import java.awt.FlowLayout; import edu.jsu.leathrum.mathlets.shared.*; public class Grapher3d extends AMathlet { private class GraphPanel extends AGraphPanel3dFacets { private class GraphCanvas extends AGraphCanvas3dFacets { public GraphCanvas(int initialWidth, int initialHeight) { super(initialWidth, initialHeight); } protected void drawNew() { DoubleTriad p1, p2, p3, p4, p5; double x=0.0, y=0.0; model = new GraphModelFacets(); for (int j=0; jc.ymin; y-=ygrid) { p1=new DoubleTriad(x,y,evaluatef(x,y,j)); p2=new DoubleTriad(x+xgrid,y,evaluatef(x+xgrid,y,j)); p3=new DoubleTriad(x,y-ygrid,evaluatef(x,y-ygrid,j)); p4=new DoubleTriad(x+xgrid,y-ygrid,evaluatef(x+xgrid,y-ygrid,j)); p5=new DoubleTriad(x+(xgrid/2),y-(ygrid/2), evaluatef(x+(xgrid/2),y-(ygrid/2),j)); dofacet(p1,p2,p5); dofacet(p1,p3,p5); dofacet(p4,p2,p5); dofacet(p4,p3,p5); } } for (x=0.0; x>c.xmin; x-=xgrid) { for (y=0.0; yc.ymin; y-=ygrid) { p1=new DoubleTriad(x,y,evaluatef(x,y,j)); p2=new DoubleTriad(x-xgrid,y,evaluatef(x-xgrid,y,j)); p3=new DoubleTriad(x,y-ygrid,evaluatef(x,y-ygrid,j)); p4=new DoubleTriad(x-xgrid,y-ygrid,evaluatef(x-xgrid,y-ygrid,j)); p5=new DoubleTriad(x-(xgrid/2),y-(ygrid/2), evaluatef(x-(xgrid/2),y-(ygrid/2),j)); dofacet(p1,p2,p5); dofacet(p1,p3,p5); dofacet(p4,p2,p5); dofacet(p4,p3,p5); } }} } } protected void paintModel(Graphics2D g) { model.paintModel(g); } } GraphCanvas canvas; public GraphPanel () { super(); canvas = new GraphCanvas(HEIGHT,WIDTH); initPanel(canvas); } } private class ParserInputSet extends AParserInputSet { public ParserInputSet(String namestr, int size) { super(namestr, size); } public ParserInputSet(String namestr, int size, boolean b, Color c) { super(namestr, size, b, c); } double x, y; protected void setVars(double[] v) { x = v[0]; y = v[1]; } protected double getVar(int id) { switch (id) { case Parser.VARX: return x; case Parser.VARY: return y; default: return Double.NaN; } } } final int NUMEQNS = 3; GraphPanel graph = new GraphPanel(); ParserInputSet field[] = new ParserInputSet[NUMEQNS]; // ("z=f(x,y)=", 25); JButton compButton = new JButton("graph"); JButton clearButton = new JButton("clear"); Box b1, b2; public Grapher3d() { this.getContentPane().setBackground(Color.white); this.getContentPane().setLayout(new FlowLayout()); this.getContentPane().add(graph); b1 = new Box(BoxLayout.Y_AXIS); for (int i=0; i