Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.geom.*;
- public class Versiera
- implements Shape
- {
- private int xCenter, yCenter;
- private Path2D path;
- private static final double A = 15;
- private static final int STEPS = 10000;
- private static final double SCALE = 10;
- private void computeVersiera()
- {
- double x = -xCenter / SCALE;
- double y = (A * A * A) / (A * A + x * x);
- double xPrev = x, yPrev = y;
- double delta = 2.0 * xCenter * SCALE / STEPS;
- x += delta;
- for (int i = 0; i < STEPS; ++i)
- {
- y = (A * A * A) / (A * A + x * x);
- path.append(new Line2D.Double(xPrev * SCALE + xCenter,
- yCenter - yPrev * SCALE,
- x * SCALE + xCenter,
- yCenter - y * SCALE), false);
- xPrev = x;
- yPrev = y;
- x += delta;
- }
- }
- public Versiera(int xCenter, int yCenter)
- {
- this.xCenter = xCenter;
- this.yCenter = yCenter;
- this.path = new Path2D.Double();
- computeVersiera();
- }
- @Override
- public Rectangle getBounds()
- {
- return path.getBounds();
- }
- @Override
- public Rectangle2D getBounds2D()
- {
- return path.getBounds2D();
- }
- @Override
- public boolean contains(double x, double y)
- {
- return path.contains(x, y);
- }
- @Override
- public boolean contains(Point2D p)
- {
- return path.contains(p);
- }
- @Override
- public boolean contains(double x, double y, double w, double h)
- {
- return path.contains(x, y, w, h);
- }
- @Override
- public boolean contains(Rectangle2D r)
- {
- return path.contains(r);
- }
- @Override
- public boolean intersects(double x, double y, double w, double h)
- {
- return path.intersects(x, y, w, h);
- }
- @Override
- public boolean intersects(Rectangle2D r)
- {
- return path.intersects(r);
- }
- @Override
- public PathIterator getPathIterator(AffineTransform at)
- {
- return path.getPathIterator(at);
- }
- @Override
- public PathIterator getPathIterator(AffineTransform at, double flatness)
- {
- return path.getPathIterator(at, flatness);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement