Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.96 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.geom.*;
  3.  
  4. public class Versiera
  5.     implements Shape
  6. {
  7.     private int xCenter, yCenter;
  8.     private Path2D path;
  9.     private static final double A = 15;
  10.     private static final int STEPS = 10000;
  11.     private static final double SCALE = 10;
  12.  
  13.     private void computeVersiera()
  14.     {
  15.         double x = -xCenter / SCALE;
  16.         double y = (A * A * A) / (A * A + x * x);
  17.         double xPrev = x, yPrev = y;
  18.         double delta = 2.0 * xCenter * SCALE / STEPS;
  19.         x += delta;
  20.         for (int i = 0; i < STEPS; ++i)
  21.         {
  22.             y = (A * A * A) / (A * A + x * x);
  23.             path.append(new Line2D.Double(xPrev * SCALE + xCenter,
  24.                                           yCenter - yPrev * SCALE,
  25.                                           x * SCALE + xCenter,
  26.                                           yCenter - y * SCALE), false);
  27.             xPrev = x;
  28.             yPrev = y;
  29.             x += delta;
  30.         }
  31.     }
  32.  
  33.     public Versiera(int xCenter, int yCenter)
  34.     {
  35.         this.xCenter = xCenter;
  36.         this.yCenter = yCenter;
  37.         this.path = new Path2D.Double();
  38.         computeVersiera();
  39.     }
  40.  
  41.     @Override
  42.     public Rectangle getBounds()
  43.     {
  44.         return path.getBounds();
  45.     }
  46.  
  47.     @Override
  48.     public Rectangle2D getBounds2D()
  49.     {
  50.         return path.getBounds2D();
  51.     }
  52.  
  53.     @Override
  54.     public boolean contains(double x, double y)
  55.     {
  56.         return path.contains(x, y);
  57.     }
  58.  
  59.     @Override
  60.     public boolean contains(Point2D p)
  61.     {
  62.         return path.contains(p);
  63.     }
  64.  
  65.     @Override
  66.     public boolean contains(double x, double y, double w, double h)
  67.     {
  68.         return path.contains(x, y, w, h);
  69.     }
  70.  
  71.     @Override
  72.     public boolean contains(Rectangle2D r)
  73.     {
  74.         return path.contains(r);
  75.     }
  76.  
  77.     @Override
  78.     public boolean intersects(double x, double y, double w, double h)
  79.     {
  80.         return path.intersects(x, y, w, h);
  81.     }
  82.  
  83.     @Override
  84.     public boolean intersects(Rectangle2D r)
  85.     {
  86.         return path.intersects(r);
  87.     }
  88.  
  89.     @Override
  90.     public PathIterator getPathIterator(AffineTransform at)
  91.     {
  92.         return path.getPathIterator(at);
  93.     }
  94.  
  95.     @Override
  96.     public PathIterator getPathIterator(AffineTransform at, double flatness)
  97.     {
  98.         return path.getPathIterator(at, flatness);
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement