home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / geom / Order2.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.0 KB  |  314 lines

  1. package sun.awt.geom;
  2.  
  3. import java.awt.geom.QuadCurve2D;
  4. import java.awt.geom.Rectangle2D;
  5. import java.util.Vector;
  6.  
  7. final class Order2 extends Curve {
  8.    // $FF: renamed from: x0 double
  9.    private double field_0;
  10.    // $FF: renamed from: y0 double
  11.    private double field_1;
  12.    private double cx0;
  13.    private double cy0;
  14.    // $FF: renamed from: x1 double
  15.    private double field_2;
  16.    // $FF: renamed from: y1 double
  17.    private double field_3;
  18.    private double xmin;
  19.    private double xmax;
  20.    private double xcoeff0;
  21.    private double xcoeff1;
  22.    private double xcoeff2;
  23.    private double ycoeff0;
  24.    private double ycoeff1;
  25.    private double ycoeff2;
  26.  
  27.    public static void insert(Vector var0, double[] var1, double var2, double var4, double var6, double var8, double var10, double var12, int var14) {
  28.       int var15 = getHorizontalParams(var4, var8, var12, var1);
  29.       if (var15 == 0) {
  30.          var0.add(new Order2(var2, var4, var6, var8, var10, var12, var14));
  31.       } else {
  32.          double var16 = var1[0];
  33.          var1[0] = var2;
  34.          var1[1] = var4;
  35.          var1[2] = var6;
  36.          var1[3] = var8;
  37.          var1[4] = var10;
  38.          var1[5] = var12;
  39.          split(var1, 0, var16);
  40.          Order2 var18 = getInstance(var2, var4, var1[2], var1[3], var1[4], var1[5], var14);
  41.          Order2 var19 = getInstance(var1[4], var1[5], var1[6], var1[7], var10, var12, var14);
  42.          if (var14 == 1) {
  43.             var0.add(var18);
  44.             var0.add(var19);
  45.          } else {
  46.             var0.add(var19);
  47.             var0.add(var18);
  48.          }
  49.  
  50.       }
  51.    }
  52.  
  53.    public static Order2 getInstance(double var0, double var2, double var4, double var6, double var8, double var10, int var12) {
  54.       return var2 > var10 ? new Order2(var8, var10, var4, var6, var0, var2, -var12) : new Order2(var0, var2, var4, var6, var8, var10, var12);
  55.    }
  56.  
  57.    public static void getEqn(double[] var0, double var1, double var3, double var5) {
  58.       var0[0] = var1;
  59.       var0[1] = var3 + var3 - var1 - var1;
  60.       var0[2] = var1 - var3 - var3 + var5;
  61.    }
  62.  
  63.    public static int getHorizontalParams(double var0, double var2, double var4, double[] var6) {
  64.       if (var0 <= var2 && var2 <= var4) {
  65.          return 0;
  66.       } else {
  67.          var0 -= var2;
  68.          var4 -= var2;
  69.          double var7 = var0 + var4;
  70.          if (var7 == (double)0.0F) {
  71.             return 0;
  72.          } else {
  73.             double var9 = var0 / var7;
  74.             if (!(var9 <= (double)0.0F) && !(var9 >= (double)1.0F)) {
  75.                var6[0] = var9;
  76.                return 1;
  77.             } else {
  78.                return 0;
  79.             }
  80.          }
  81.       }
  82.    }
  83.  
  84.    public static void split(double[] var0, int var1, double var2) {
  85.       double var12;
  86.       var0[var1 + 8] = var12 = var0[var1 + 4];
  87.       double var14;
  88.       var0[var1 + 9] = var14 = var0[var1 + 5];
  89.       double var8 = var0[var1 + 2];
  90.       double var10 = var0[var1 + 3];
  91.       var12 = var8 + (var12 - var8) * var2;
  92.       var14 = var10 + (var14 - var10) * var2;
  93.       double var4 = var0[var1 + 0];
  94.       double var6 = var0[var1 + 1];
  95.       var4 += (var8 - var4) * var2;
  96.       var6 += (var10 - var6) * var2;
  97.       var8 = var4 + (var12 - var4) * var2;
  98.       var10 = var6 + (var14 - var6) * var2;
  99.       var0[var1 + 2] = var4;
  100.       var0[var1 + 3] = var6;
  101.       var0[var1 + 4] = var8;
  102.       var0[var1 + 5] = var10;
  103.       var0[var1 + 6] = var12;
  104.       var0[var1 + 7] = var14;
  105.    }
  106.  
  107.    public Order2(double var1, double var3, double var5, double var7, double var9, double var11, int var13) {
  108.       super(var13);
  109.       if (var7 < var3) {
  110.          var7 = var3;
  111.       } else if (var7 > var11) {
  112.          var7 = var11;
  113.       }
  114.  
  115.       this.field_0 = var1;
  116.       this.field_1 = var3;
  117.       this.cx0 = var5;
  118.       this.cy0 = var7;
  119.       this.field_2 = var9;
  120.       this.field_3 = var11;
  121.       this.xmin = Math.min(Math.min(var1, var9), var5);
  122.       this.xmax = Math.max(Math.max(var1, var9), var5);
  123.       this.xcoeff0 = var1;
  124.       this.xcoeff1 = var5 + var5 - var1 - var1;
  125.       this.xcoeff2 = var1 - var5 - var5 + var9;
  126.       this.ycoeff0 = var3;
  127.       this.ycoeff1 = var7 + var7 - var3 - var3;
  128.       this.ycoeff2 = var3 - var7 - var7 + var11;
  129.    }
  130.  
  131.    public int getOrder() {
  132.       return 2;
  133.    }
  134.  
  135.    public double getXTop() {
  136.       return this.field_0;
  137.    }
  138.  
  139.    public double getYTop() {
  140.       return this.field_1;
  141.    }
  142.  
  143.    public double getXBot() {
  144.       return this.field_2;
  145.    }
  146.  
  147.    public double getYBot() {
  148.       return this.field_3;
  149.    }
  150.  
  151.    public double getXMin() {
  152.       return this.xmin;
  153.    }
  154.  
  155.    public double getXMax() {
  156.       return this.xmax;
  157.    }
  158.  
  159.    public double getX0() {
  160.       return super.direction == 1 ? this.field_0 : this.field_2;
  161.    }
  162.  
  163.    public double getY0() {
  164.       return super.direction == 1 ? this.field_1 : this.field_3;
  165.    }
  166.  
  167.    public double getCX0() {
  168.       return this.cx0;
  169.    }
  170.  
  171.    public double getCY0() {
  172.       return this.cy0;
  173.    }
  174.  
  175.    public double getX1() {
  176.       return super.direction == -1 ? this.field_0 : this.field_2;
  177.    }
  178.  
  179.    public double getY1() {
  180.       return super.direction == -1 ? this.field_1 : this.field_3;
  181.    }
  182.  
  183.    public double XforY(double var1) {
  184.       if (var1 == this.field_1) {
  185.          return this.field_0;
  186.       } else {
  187.          return var1 == this.field_3 ? this.field_2 : this.XforT(this.TforY(var1));
  188.       }
  189.    }
  190.  
  191.    public double TforY(double var1) {
  192.       double[] var3 = new double[3];
  193.       getEqn(var3, this.field_1, this.cy0, this.field_3);
  194.       var3[0] -= var1;
  195.       int var4 = QuadCurve2D.solveQuadratic(var3, var3);
  196.       return Curve.firstValidRoot(var3, var4);
  197.    }
  198.  
  199.    public double XforT(double var1) {
  200.       return (this.xcoeff2 * var1 + this.xcoeff1) * var1 + this.xcoeff0;
  201.    }
  202.  
  203.    public double YforT(double var1) {
  204.       return (this.ycoeff2 * var1 + this.ycoeff1) * var1 + this.ycoeff0;
  205.    }
  206.  
  207.    public double dXforT(double var1, int var3) {
  208.       switch (var3) {
  209.          case 0:
  210.             return (this.xcoeff2 * var1 + this.xcoeff1) * var1 + this.xcoeff0;
  211.          case 1:
  212.             return (double)2.0F * this.xcoeff2 * var1 + this.xcoeff1;
  213.          case 2:
  214.             return (double)2.0F * this.xcoeff2;
  215.          default:
  216.             return (double)0.0F;
  217.       }
  218.    }
  219.  
  220.    public double dYforT(double var1, int var3) {
  221.       switch (var3) {
  222.          case 0:
  223.             return (this.ycoeff2 * var1 + this.ycoeff1) * var1 + this.ycoeff0;
  224.          case 1:
  225.             return (double)2.0F * this.ycoeff2 * var1 + this.ycoeff1;
  226.          case 2:
  227.             return (double)2.0F * this.ycoeff2;
  228.          default:
  229.             return (double)0.0F;
  230.       }
  231.    }
  232.  
  233.    public double nextVertical(double var1, double var3) {
  234.       double var5 = -this.ycoeff1 / ((double)2.0F * this.ycoeff2);
  235.       return var5 > var1 && var5 < var3 ? var5 : var3;
  236.    }
  237.  
  238.    public void enlarge(Rectangle2D var1) {
  239.       var1.add(this.field_0, this.field_1);
  240.       double var2 = -this.xcoeff1 / ((double)2.0F * this.xcoeff2);
  241.       if (var2 > (double)0.0F && var2 < (double)1.0F) {
  242.          var1.add(this.XforT(var2), this.YforT(var2));
  243.       }
  244.  
  245.       var1.add(this.field_2, this.field_3);
  246.    }
  247.  
  248.    public Curve getSubCurve(double var1, double var3, int var5) {
  249.       if (var1 == this.field_1 && var3 == this.field_3) {
  250.          return ((Curve)this).getWithDirection(var5);
  251.       } else {
  252.          double[] var6 = new double[10];
  253.          double var7;
  254.          if (var1 == this.field_1) {
  255.             var7 = (double)0.0F;
  256.          } else {
  257.             getEqn(var6, this.field_1, this.cy0, this.field_3);
  258.             var6[0] -= var1;
  259.             int var11 = QuadCurve2D.solveQuadratic(var6, var6);
  260.             var7 = Curve.firstValidRoot(var6, var11);
  261.          }
  262.  
  263.          double var9;
  264.          if (var3 == this.field_3) {
  265.             var9 = (double)1.0F;
  266.          } else {
  267.             getEqn(var6, this.field_1, this.cy0, this.field_3);
  268.             var6[0] -= var3;
  269.             int var12 = QuadCurve2D.solveQuadratic(var6, var6);
  270.             var9 = Curve.firstValidRoot(var6, var12);
  271.          }
  272.  
  273.          var6[0] = this.field_0;
  274.          var6[1] = this.field_1;
  275.          var6[2] = this.cx0;
  276.          var6[3] = this.cy0;
  277.          var6[4] = this.field_2;
  278.          var6[5] = this.field_3;
  279.          if (var9 < (double)1.0F) {
  280.             split(var6, 0, var9);
  281.          }
  282.  
  283.          if (var7 <= (double)0.0F) {
  284.             return new Order2(var6[0], var1, var6[2], var6[3], var6[4], var3, var5);
  285.          } else {
  286.             split(var6, 0, var7 / var9);
  287.             return new Order2(var6[4], var1, var6[6], var6[7], var6[8], var3, var5);
  288.          }
  289.       }
  290.    }
  291.  
  292.    public Curve getReversedCurve() {
  293.       return new Order2(this.field_0, this.field_1, this.cx0, this.cy0, this.field_2, this.field_3, -super.direction);
  294.    }
  295.  
  296.    public int getSegment(double[] var1) {
  297.       var1[0] = this.cx0;
  298.       var1[1] = this.cy0;
  299.       if (super.direction == 1) {
  300.          var1[2] = this.field_2;
  301.          var1[3] = this.field_3;
  302.       } else {
  303.          var1[2] = this.field_0;
  304.          var1[3] = this.field_1;
  305.       }
  306.  
  307.       return 2;
  308.    }
  309.  
  310.    public String controlPointString() {
  311.       return "(" + Curve.round(this.cx0) + ", " + Curve.round(this.cy0) + "), ";
  312.    }
  313. }
  314.