home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / geom / EllipseIterator.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.0 KB  |  124 lines

  1. package java.awt.geom;
  2.  
  3. import java.util.NoSuchElementException;
  4.  
  5. class EllipseIterator implements PathIterator {
  6.    // $FF: renamed from: x double
  7.    double field_0;
  8.    // $FF: renamed from: y double
  9.    double field_1;
  10.    // $FF: renamed from: w double
  11.    double field_2;
  12.    // $FF: renamed from: h double
  13.    double field_3;
  14.    AffineTransform affine;
  15.    int index;
  16.    private static final double angle = (Math.PI / 4D);
  17.    // $FF: renamed from: a double
  18.    private static final double field_4 = (double)1.0F - Math.cos((Math.PI / 4D));
  19.    // $FF: renamed from: b double
  20.    private static final double field_5 = Math.tan((Math.PI / 4D));
  21.    // $FF: renamed from: c double
  22.    private static final double field_6;
  23.    // $FF: renamed from: cv double
  24.    private static final double field_7;
  25.    private static double[][] ctrlpts;
  26.  
  27.    EllipseIterator(Ellipse2D var1, AffineTransform var2) {
  28.       this.field_0 = ((RectangularShape)var1).getX();
  29.       this.field_1 = ((RectangularShape)var1).getY();
  30.       this.field_2 = ((RectangularShape)var1).getWidth();
  31.       this.field_3 = ((RectangularShape)var1).getHeight();
  32.       this.affine = var2;
  33.       if (this.field_2 < (double)0.0F || this.field_3 < (double)0.0F) {
  34.          this.index = 6;
  35.       }
  36.  
  37.    }
  38.  
  39.    public int getWindingRule() {
  40.       return 1;
  41.    }
  42.  
  43.    public boolean isDone() {
  44.       return this.index > 5;
  45.    }
  46.  
  47.    public void next() {
  48.       ++this.index;
  49.    }
  50.  
  51.    public int currentSegment(float[] var1) {
  52.       if (this.isDone()) {
  53.          throw new NoSuchElementException("ellipse iterator out of bounds");
  54.       } else if (this.index == 5) {
  55.          return 4;
  56.       } else if (this.index == 0) {
  57.          double[] var3 = ctrlpts[3];
  58.          var1[0] = (float)(this.field_0 + var3[4] * this.field_2);
  59.          var1[1] = (float)(this.field_1 + var3[5] * this.field_3);
  60.          if (this.affine != null) {
  61.             this.affine.transform(var1, 0, var1, 0, 1);
  62.          }
  63.  
  64.          return 0;
  65.       } else {
  66.          double[] var2 = ctrlpts[this.index - 1];
  67.          var1[0] = (float)(this.field_0 + var2[0] * this.field_2);
  68.          var1[1] = (float)(this.field_1 + var2[1] * this.field_3);
  69.          var1[2] = (float)(this.field_0 + var2[2] * this.field_2);
  70.          var1[3] = (float)(this.field_1 + var2[3] * this.field_3);
  71.          var1[4] = (float)(this.field_0 + var2[4] * this.field_2);
  72.          var1[5] = (float)(this.field_1 + var2[5] * this.field_3);
  73.          if (this.affine != null) {
  74.             this.affine.transform(var1, 0, var1, 0, 3);
  75.          }
  76.  
  77.          return 3;
  78.       }
  79.    }
  80.  
  81.    public int currentSegment(double[] var1) {
  82.       if (this.isDone()) {
  83.          throw new NoSuchElementException("ellipse iterator out of bounds");
  84.       } else if (this.index == 5) {
  85.          return 4;
  86.       } else if (this.index == 0) {
  87.          double[] var3 = ctrlpts[3];
  88.          var1[0] = this.field_0 + var3[4] * this.field_2;
  89.          var1[1] = this.field_1 + var3[5] * this.field_3;
  90.          if (this.affine != null) {
  91.             this.affine.transform(var1, 0, var1, 0, 1);
  92.          }
  93.  
  94.          return 0;
  95.       } else {
  96.          double[] var2 = ctrlpts[this.index - 1];
  97.          var1[0] = this.field_0 + var2[0] * this.field_2;
  98.          var1[1] = this.field_1 + var2[1] * this.field_3;
  99.          var1[2] = this.field_0 + var2[2] * this.field_2;
  100.          var1[3] = this.field_1 + var2[3] * this.field_3;
  101.          var1[4] = this.field_0 + var2[4] * this.field_2;
  102.          var1[5] = this.field_1 + var2[5] * this.field_3;
  103.          if (this.affine != null) {
  104.             this.affine.transform(var1, 0, var1, 0, 3);
  105.          }
  106.  
  107.          return 3;
  108.       }
  109.    }
  110.  
  111.    static {
  112.       field_6 = Math.sqrt((double)1.0F + field_5 * field_5) - (double)1.0F + field_4;
  113.       field_7 = 1.3333333333333333 * field_4 * field_5 / field_6;
  114.       ctrlpts = new double[][]{{(double)1.0F, field_7, field_7, (double)1.0F, (double)0.0F, (double)1.0F}, {-field_7, (double)1.0F, (double)-1.0F, field_7, (double)-1.0F, (double)0.0F}, {(double)-1.0F, -field_7, -field_7, (double)-1.0F, (double)0.0F, (double)-1.0F}, {field_7, (double)-1.0F, (double)1.0F, -field_7, (double)1.0F, (double)0.0F}};
  115.  
  116.       for(int var0 = 0; var0 < 4; ++var0) {
  117.          for(int var1 = 0; var1 < 6; ++var1) {
  118.             ctrlpts[var0][var1] = ctrlpts[var0][var1] * (double)0.5F + (double)0.5F;
  119.          }
  120.       }
  121.  
  122.    }
  123. }
  124.