mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-12 02:02:16 +10:00
BJT symbol
This commit is contained in:
+15
-16
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user