BJT symbol

This commit is contained in:
bancika
2012-03-10 04:03:44 +00:00
parent a7b48f4f52
commit 8169e3a6ba
@@ -28,8 +28,8 @@ public class BJTSymbol extends AbstractTransistorSymbol {
GeneralPath polyline = new GeneralPath(); GeneralPath polyline = new GeneralPath();
polyline.moveTo(x + pinSpacing / 2, y - pinSpacing * 3 / 2); polyline.moveTo(x + pinSpacing / 2, y - pinSpacing);
polyline.lineTo(x + pinSpacing / 2, y + pinSpacing * 3 / 2); polyline.lineTo(x + pinSpacing / 2, y + pinSpacing);
body[0] = polyline; body[0] = polyline;
@@ -37,32 +37,31 @@ public class BJTSymbol extends AbstractTransistorSymbol {
polyline.moveTo(x, y); polyline.moveTo(x, y);
polyline.lineTo(x + pinSpacing / 2, y); polyline.lineTo(x + pinSpacing / 2, y);
polyline.moveTo(x + pinSpacing / 2, y - pinSpacing * 7 / 8); polyline.moveTo(x + pinSpacing / 2, y - pinSpacing / 2);
polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 3 / 2); polyline.lineTo(x + pinSpacing * 2, y - pinSpacing);
polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 2); polyline.lineTo(x + pinSpacing * 2, y - pinSpacing * 2);
polyline.moveTo(x + pinSpacing / 2, y + pinSpacing * 7 / 8); polyline.moveTo(x + pinSpacing / 2, y + pinSpacing / 2);
polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 3 / 2); polyline.lineTo(x + pinSpacing * 2, y + pinSpacing);
polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2); polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2);
body[1] = polyline; body[1] = polyline;
Area arrow; Area arrow;
double theta; double theta;
if (polarity == BJTPolarity.NPN) { if (polarity == BJTPolarity.NPN) {
theta = Math.atan(5.0 / 12); theta = Math.atan(1.0 / 3);
arrow = new Area(new Polygon(new int[] { x + pinSpacing, x + pinSpacing, arrow = new Area(new Polygon(new int[] { x + pinSpacing, x + pinSpacing,
x + pinSpacing * 10 / 6 }, new int[] { x + pinSpacing * 10 / 6 }, new int[] { y - pinSpacing / 5 + pinSpacing / 2,
y - pinSpacing / 5 + pinSpacing * 7 / 8, y + pinSpacing / 5 + pinSpacing / 2, y + pinSpacing / 2 }, 3));
y + pinSpacing / 5 + pinSpacing * 7 / 8, y + pinSpacing * 7 / 8 }, 3));
arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y
+ pinSpacing * 7 / 8)); + pinSpacing / 2));
} else { } else {
theta = -Math.atan(5.0 / 12); theta = -Math.atan(1.0 / 3);
arrow = new Area(new Polygon(new int[] { x + pinSpacing, x + pinSpacing * 10 / 6, arrow = new Area(new Polygon(new int[] { x + pinSpacing, x + pinSpacing * 10 / 6,
x + pinSpacing * 10 / 6 }, new int[] { y - pinSpacing * 7 / 8, x + pinSpacing * 10 / 6 }, new int[] { y - pinSpacing / 2,
y - pinSpacing / 5 - pinSpacing * 7 / 8, y - pinSpacing / 5 - pinSpacing / 2, y + pinSpacing / 5 - pinSpacing / 2 },
y + pinSpacing / 5 - pinSpacing * 7 / 8 }, 3)); 3));
arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y arrow.transform(AffineTransform.getRotateInstance(theta, x + pinSpacing / 2, y
- pinSpacing * 7 / 8)); - pinSpacing / 2));
} }
body[2] = arrow; body[2] = arrow;
} }