Capacitor.java


Capacitor.java

// Capacitor.java
import java.awt.*;
import java.awt.geom.*;


public class Capacitor
{
    String name;
    double value;
    Color color;
    double angle, phi;
    double xpos, ypos;
    AffineTransform tr;

    Capacitor()
    {
	color = Color.RED;
	xpos = 0.0;
	ypos = 0.0;
	setAngle(0.0);
	
    }
    void setAngle(double angle)
    {
	this.angle = angle;
	phi = angle*Math.PI/180.0;
    }
    void setPosition(double x, double y)
    {
        xpos = x;
        ypos = y;
    }
    public String toString() {
       String out = "Capacitor  " + xpos +", " + ypos + " angle " + angle;
       return out;
   }

   // converts screen (pixel) coordinates to object coordinates
   // returns true if inside the object
   public boolean getLocation(Point2D src, Point2D dst) {
	tr.transform(src,dst);
	if (Math.abs(dst.getX())>3.1) return false;
	if (Math.abs(dst.getY())>1.6) return false;
	return true;
   }
    public void draw(Graphics g)
    {
	int i;
	double u;
	double scl = 0.1;
	Graphics2D g2 = (Graphics2D) g;
	Stroke saveStroke = g2.getStroke();
	AffineTransform saveXform = g2.getTransform();
	// use minus sign to switch to book/image coordinate system
	g2.translate(xpos,-ypos);
	g2.rotate(-phi);
	g2.scale(scl,scl);
	tr = g2.getTransform();
	try {
	  tr = tr.createInverse();
	}
	catch(Exception e) {
	  System.err.println("Exception " + e);
	}

	g2.setStroke(new BasicStroke(0.25f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
	Paint savePaint = g2.getPaint();
	g2.setPaint(color);
	GeneralPath p = new GeneralPath();
	double [] xp = { 0.5, 0.7, 0.9 };
	double [] yp = { 1.3, 1.4, 1.5 };
	p.moveTo(-3.0,0.0);
	p.lineTo(-0.5,0.0);
	p.moveTo(-0.5,-1.5);
	p.lineTo(-0.5,1.5);
	p.moveTo(0.5,-1.0);
	p.lineTo(0.5, 1.0);
	p.curveTo(xp[0],yp[0],xp[1],yp[1],xp[2],yp[2]);
	p.moveTo(0.5,-1.0);
	p.curveTo(xp[0],-yp[0],xp[1],-yp[1],xp[2],-yp[2]);
	p.moveTo(0.5,0.0);
	p.lineTo(3.0,0.0);
	g2.draw(p);
	g2.setStroke(saveStroke);
	g2.setPaint(savePaint);
	g2.setTransform(saveXform);
    }
}


Maintained by John Loomis, updated Thu Feb 28 10:20:19 2019