Transformerspublic abstract class Transformers extends Component
Fields Summary |
---|
Shape | mAxes | Shape | mShape | int | mLength | int | mArrowLength | int | mTickSize |
Constructors Summary |
---|
public Transformers()
mAxes = createAxes();
mShape = createShape();
|
Methods Summary |
---|
protected java.awt.Shape | createAxes()
GeneralPath path = new GeneralPath();
// Axes.
path.moveTo(-mLength, 0);
path.lineTo(mLength, 0);
path.moveTo(0, -mLength);
path.lineTo(0, mLength);
// Arrows.
path.moveTo(mLength - mArrowLength, -mArrowLength);
path.lineTo(mLength, 0);
path.lineTo(mLength - mArrowLength, mArrowLength);
path.moveTo(-mArrowLength, mLength - mArrowLength);
path.lineTo(0, mLength);
path.lineTo(mArrowLength, mLength - mArrowLength);
// Half-centimeter tick marks
float cm = 72 / 2.54f;
float lengthCentimeter = mLength / cm;
for (float i = 0.5f; i < lengthCentimeter; i += 1.0f) {
float tick = i * cm;
path.moveTo( tick, -mTickSize / 2);
path.lineTo( tick, mTickSize / 2);
path.moveTo(-tick, -mTickSize / 2);
path.lineTo(-tick, mTickSize / 2);
path.moveTo(-mTickSize / 2, tick);
path.lineTo( mTickSize / 2, tick);
path.moveTo(-mTickSize / 2, -tick);
path.lineTo( mTickSize / 2, -tick);
}
// Full-centimeter tick marks
for (float i = 1.0f; i < lengthCentimeter; i += 1.0f) {
float tick = i * cm;
path.moveTo( tick, -mTickSize);
path.lineTo( tick, mTickSize);
path.moveTo(-tick, -mTickSize);
path.lineTo(-tick, mTickSize);
path.moveTo(-mTickSize, tick);
path.lineTo( mTickSize, tick);
path.moveTo(-mTickSize, -tick);
path.lineTo( mTickSize, -tick);
}
return path;
| protected java.awt.Shape | createShape()
float cm = 72 / 2.54f;
return new Rectangle2D.Float(cm, cm, 2 * cm, cm);
| public java.awt.Frame | getFrame()
ApplicationFrame f = new ApplicationFrame("...more than meets the eye");
f.setLayout(new BorderLayout());
f.add(this, BorderLayout.CENTER);
f.setSize(350,200);
f.center();
return f;
| public abstract java.awt.geom.AffineTransform | getTransform()
| public void | paint(java.awt.Graphics g)
Graphics2D g2 = (Graphics2D)g;
// Use antialiasing.
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// Move the origin to 75, 75.
AffineTransform at = AffineTransform.getTranslateInstance(75, 75);
g2.transform(at);
// Draw the shapes in their original locations.
g2.setPaint(Color.black);
g2.draw(mAxes);
g2.draw(mShape);
// Transform the Graphics2D.
g2.transform(getTransform());
// Draw the shapes in their new locations, but dashed.
Stroke stroke = new BasicStroke(1,
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,
new float[] { 3, 1 }, 0);
g2.setStroke(stroke);
g2.draw(mAxes);
g2.draw(mShape);
|
|