home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / ext / j3dutils.jar / com / sun / j3d / internal / Distance.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-19  |  11.0 KB  |  1,458 lines

  1. package com.sun.j3d.internal;
  2.  
  3. import javax.vecmath.Point3d;
  4. import javax.vecmath.Vector3d;
  5.  
  6. public class Distance {
  7.    static final double FUZZ = 1.0E-5;
  8.  
  9.    private static final double DIST(double var0) {
  10.       return Math.abs(var0);
  11.    }
  12.  
  13.    public static double rayToSegment(Point3d var0, Vector3d var1, Point3d var2, Point3d var3) {
  14.       return rayToSegment(var0, var1, var2, var3, (Point3d)null, (Point3d)null, (double[])null);
  15.    }
  16.  
  17.    public static double rayToSegment(Point3d var0, Vector3d var1, Point3d var2, Point3d var3, Point3d var4, Point3d var5, double[] var6) {
  18.       Vector3d var11 = new Vector3d();
  19.       var11.sub(var0, var2);
  20.       Vector3d var12 = new Vector3d();
  21.       var12.sub(var3, var2);
  22.       double var13 = var1.dot(var1);
  23.       double var15 = -var1.dot(var12);
  24.       double var17 = var12.dot(var12);
  25.       double var19 = var1.dot(var11);
  26.       double var23 = var11.dot(var11);
  27.       double var25 = Math.abs(var13 * var17 - var15 * var15);
  28.       if (var25 >= 1.0E-5) {
  29.          double var61 = -var12.dot(var11);
  30.          double var34 = var15 * var61 - var17 * var19;
  31.          double var46 = var15 * var19 - var13 * var61;
  32.          if (var34 >= (double)0.0F) {
  33.             if (var46 >= (double)0.0F) {
  34.                if (var46 <= var25) {
  35.                   double var29 = (double)1.0F / var25;
  36.                   var34 *= var29;
  37.                   var46 *= var29;
  38.                   if (var4 != null) {
  39.                      var4.scaleAdd(var34, var1, var0);
  40.                   }
  41.  
  42.                   if (var5 != null) {
  43.                      var5.scaleAdd(var46, var12, var2);
  44.                   }
  45.  
  46.                   if (var6 != null) {
  47.                      var6[0] = var34;
  48.                      var6[1] = var46;
  49.                   }
  50.  
  51.                   return DIST(var34 * (var13 * var34 + var15 * var46 + (double)2.0F * var19) + var46 * (var15 * var34 + var17 * var46 + (double)2.0F * var61) + var23);
  52.                } else {
  53.                   var46 = (double)1.0F;
  54.                   if (var19 >= (double)0.0F) {
  55.                      var34 = (double)0.0F;
  56.                      if (var4 != null) {
  57.                         var4.set(var0);
  58.                      }
  59.  
  60.                      if (var5 != null) {
  61.                         var5.set(var3);
  62.                      }
  63.  
  64.                      if (var6 != null) {
  65.                         var6[0] = var34;
  66.                         var6[1] = var46;
  67.                      }
  68.  
  69.                      return DIST(var17 + (double)2.0F * var61 + var23);
  70.                   } else {
  71.                      var34 = -var19 / var13;
  72.                      if (var4 != null) {
  73.                         var4.scaleAdd(var34, var1, var0);
  74.                      }
  75.  
  76.                      if (var5 != null) {
  77.                         var5.set(var3);
  78.                      }
  79.  
  80.                      if (var6 != null) {
  81.                         var6[0] = var34;
  82.                         var6[1] = var46;
  83.                      }
  84.  
  85.                      return DIST((var19 + (double)2.0F * var15) * var34 + var17 + (double)2.0F * var61 + var23);
  86.                   }
  87.                }
  88.             } else {
  89.                var46 = (double)0.0F;
  90.                if (var19 >= (double)0.0F) {
  91.                   var34 = (double)0.0F;
  92.                   if (var4 != null) {
  93.                      var4.set(var0);
  94.                   }
  95.  
  96.                   if (var5 != null) {
  97.                      var5.set(var2);
  98.                   }
  99.  
  100.                   if (var6 != null) {
  101.                      var6[0] = var34;
  102.                      var6[1] = var46;
  103.                   }
  104.  
  105.                   return DIST(var23);
  106.                } else {
  107.                   var34 = -var19 / var13;
  108.                   if (var4 != null) {
  109.                      var4.scaleAdd(var34, var1, var0);
  110.                   }
  111.  
  112.                   if (var5 != null) {
  113.                      var5.set(var2);
  114.                   }
  115.  
  116.                   if (var6 != null) {
  117.                      var6[0] = var34;
  118.                      var6[1] = var46;
  119.                   }
  120.  
  121.                   return DIST(var19 * var34 + var23);
  122.                }
  123.             }
  124.          } else if (var46 <= (double)0.0F) {
  125.             if (var19 < (double)0.0F) {
  126.                var34 = -var19 / var13;
  127.                var46 = (double)0.0F;
  128.                if (var4 != null) {
  129.                   var4.scaleAdd(var34, var1, var0);
  130.                }
  131.  
  132.                if (var5 != null) {
  133.                   var5.set(var2);
  134.                }
  135.  
  136.                if (var6 != null) {
  137.                   var6[0] = var34;
  138.                   var6[1] = var46;
  139.                }
  140.  
  141.                return DIST(var19 * var34 + var23);
  142.             } else {
  143.                var34 = (double)0.0F;
  144.                if (var61 >= (double)0.0F) {
  145.                   var46 = (double)0.0F;
  146.                   if (var4 != null) {
  147.                      var4.set(var0);
  148.                   }
  149.  
  150.                   if (var5 != null) {
  151.                      var5.set(var2);
  152.                   }
  153.  
  154.                   if (var6 != null) {
  155.                      var6[0] = var34;
  156.                      var6[1] = var46;
  157.                   }
  158.  
  159.                   return DIST(var23);
  160.                } else if (-var61 >= var17) {
  161.                   var46 = (double)1.0F;
  162.                   if (var4 != null) {
  163.                      var4.set(var0);
  164.                   }
  165.  
  166.                   if (var5 != null) {
  167.                      var5.set(var3);
  168.                   }
  169.  
  170.                   if (var6 != null) {
  171.                      var6[0] = var34;
  172.                      var6[1] = var46;
  173.                   }
  174.  
  175.                   return DIST(var17 + (double)2.0F * var61 + var23);
  176.                } else {
  177.                   var46 = -var61 / var17;
  178.                   if (var4 != null) {
  179.                      var4.set(var0);
  180.                   }
  181.  
  182.                   if (var5 != null) {
  183.                      var5.scaleAdd(var46, var12, var2);
  184.                   }
  185.  
  186.                   if (var6 != null) {
  187.                      var6[0] = var34;
  188.                      var6[1] = var46;
  189.                   }
  190.  
  191.                   return DIST(var61 * var46 + var23);
  192.                }
  193.             }
  194.          } else if (var46 <= var25) {
  195.             var34 = (double)0.0F;
  196.             if (var61 >= (double)0.0F) {
  197.                var46 = (double)0.0F;
  198.                if (var4 != null) {
  199.                   var4.set(var0);
  200.                }
  201.  
  202.                if (var5 != null) {
  203.                   var5.set(var2);
  204.                }
  205.  
  206.                if (var6 != null) {
  207.                   var6[0] = var34;
  208.                   var6[1] = var46;
  209.                }
  210.  
  211.                return DIST(var23);
  212.             } else if (-var61 >= var17) {
  213.                var46 = (double)1.0F;
  214.                if (var4 != null) {
  215.                   var4.set(var0);
  216.                }
  217.  
  218.                if (var5 != null) {
  219.                   var5.set(var3);
  220.                }
  221.  
  222.                if (var6 != null) {
  223.                   var6[0] = var34;
  224.                   var6[1] = var46;
  225.                }
  226.  
  227.                return DIST(var17 + (double)2.0F * var61 + var23);
  228.             } else {
  229.                var46 = -var61 / var17;
  230.                if (var4 != null) {
  231.                   var4.set(var0);
  232.                }
  233.  
  234.                if (var5 != null) {
  235.                   var5.scaleAdd(var46, var12, var2);
  236.                }
  237.  
  238.                if (var6 != null) {
  239.                   var6[0] = var34;
  240.                   var6[1] = var46;
  241.                }
  242.  
  243.                return DIST(var61 * var46 + var23);
  244.             }
  245.          } else {
  246.             double var62 = var15 + var19;
  247.             if (var62 < (double)0.0F) {
  248.                var34 = -var62 / var13;
  249.                var46 = (double)1.0F;
  250.                if (var4 != null) {
  251.                   var4.scaleAdd(var34, var1, var0);
  252.                }
  253.  
  254.                if (var5 != null) {
  255.                   var5.set(var3);
  256.                }
  257.  
  258.                if (var6 != null) {
  259.                   var6[0] = var34;
  260.                   var6[1] = var46;
  261.                }
  262.  
  263.                return DIST(var62 * var34 + var17 + (double)2.0F * var61 + var23);
  264.             } else {
  265.                var34 = (double)0.0F;
  266.                if (var61 >= (double)0.0F) {
  267.                   var46 = (double)0.0F;
  268.                   if (var4 != null) {
  269.                      var4.set(var0);
  270.                   }
  271.  
  272.                   if (var5 != null) {
  273.                      var5.set(var2);
  274.                   }
  275.  
  276.                   if (var6 != null) {
  277.                      var6[0] = var34;
  278.                      var6[1] = var46;
  279.                   }
  280.  
  281.                   return DIST(var23);
  282.                } else if (-var61 >= var17) {
  283.                   var46 = (double)1.0F;
  284.                   if (var4 != null) {
  285.                      var4.set(var0);
  286.                   }
  287.  
  288.                   if (var5 != null) {
  289.                      var5.set(var3);
  290.                   }
  291.  
  292.                   if (var6 != null) {
  293.                      var6[0] = var34;
  294.                      var6[1] = var46;
  295.                   }
  296.  
  297.                   return DIST(var17 + (double)2.0F * var61 + var23);
  298.                } else {
  299.                   var46 = -var61 / var17;
  300.                   if (var4 != null) {
  301.                      var4.set(var0);
  302.                   }
  303.  
  304.                   if (var5 != null) {
  305.                      var5.scaleAdd(var46, var12, var2);
  306.                   }
  307.  
  308.                   if (var6 != null) {
  309.                      var6[0] = var34;
  310.                      var6[1] = var46;
  311.                   }
  312.  
  313.                   return DIST(var61 * var46 + var23);
  314.                }
  315.             }
  316.          }
  317.       } else if (var15 > (double)0.0F) {
  318.          double var45 = (double)0.0F;
  319.          if (var19 >= (double)0.0F) {
  320.             double var33 = (double)0.0F;
  321.             if (var4 != null) {
  322.                var4.set(var0);
  323.             }
  324.  
  325.             if (var5 != null) {
  326.                var5.set(var2);
  327.             }
  328.  
  329.             if (var6 != null) {
  330.                var6[0] = var33;
  331.                var6[1] = var45;
  332.             }
  333.  
  334.             return DIST(var23);
  335.          } else {
  336.             double var32 = -var19 / var13;
  337.             if (var4 != null) {
  338.                var4.scaleAdd(var32, var1, var0);
  339.             }
  340.  
  341.             if (var5 != null) {
  342.                var5.set(var2);
  343.             }
  344.  
  345.             if (var6 != null) {
  346.                var6[0] = var32;
  347.                var6[1] = var45;
  348.             }
  349.  
  350.             return DIST(var19 * var32 + var23);
  351.          }
  352.       } else {
  353.          double var21 = var12.dot(var11);
  354.          double var9 = (double)1.0F;
  355.          double var27 = var15 + var19;
  356.          if (var27 >= (double)0.0F) {
  357.             double var31 = (double)0.0F;
  358.             if (var4 != null) {
  359.                var4.set(var0);
  360.             }
  361.  
  362.             if (var5 != null) {
  363.                var5.set(var3);
  364.             }
  365.  
  366.             if (var6 != null) {
  367.                var6[0] = var31;
  368.                var6[1] = var9;
  369.             }
  370.  
  371.             return DIST(var17 + (double)2.0F * var21 + var23);
  372.          } else {
  373.             double var7 = -var27 / var13;
  374.             if (var4 != null) {
  375.                var4.scaleAdd(var7, var1, var0);
  376.             }
  377.  
  378.             if (var5 != null) {
  379.                var5.set(var3);
  380.             }
  381.  
  382.             if (var6 != null) {
  383.                var6[0] = var7;
  384.                var6[1] = var9;
  385.             }
  386.  
  387.             return DIST(var27 * var7 + var17 + (double)2.0F * var21 + var23);
  388.          }
  389.       }
  390.    }
  391.  
  392.    public static double rayToRay(Point3d var0, Vector3d var1, Point3d var2, Vector3d var3) {
  393.       return rayToRay(var0, var1, var2, var3, (Point3d)null, (Point3d)null, (double[])null);
  394.    }
  395.  
  396.    public static double rayToRay(Point3d var0, Vector3d var1, Point3d var2, Vector3d var3, Point3d var4, Point3d var5, double[] var6) {
  397.       Vector3d var11 = new Vector3d();
  398.       var11.sub(var0, var2);
  399.       double var12 = var1.dot(var1);
  400.       double var14 = -var1.dot(var3);
  401.       double var16 = var3.dot(var3);
  402.       double var18 = var1.dot(var11);
  403.       double var22 = var11.dot(var11);
  404.       double var24 = Math.abs(var12 * var16 - var14 * var14);
  405.       if (var24 >= 1.0E-5) {
  406.          double var48 = -var3.dot(var11);
  407.          double var31 = var14 * var48 - var16 * var18;
  408.          double var40 = var14 * var18 - var12 * var48;
  409.          if (var31 >= (double)0.0F) {
  410.             if (var40 >= (double)0.0F) {
  411.                double var26 = (double)1.0F / var24;
  412.                var31 *= var26;
  413.                var40 *= var26;
  414.                if (var4 != null) {
  415.                   var4.scaleAdd(var31, var1, var0);
  416.                }
  417.  
  418.                if (var5 != null) {
  419.                   var5.scaleAdd(var40, var3, var2);
  420.                }
  421.  
  422.                if (var6 != null) {
  423.                   var6[0] = var31;
  424.                   var6[1] = var40;
  425.                }
  426.  
  427.                return DIST(var31 * (var12 * var31 + var14 * var40 + (double)2.0F * var18) + var40 * (var14 * var31 + var16 * var40 + (double)2.0F * var48) + var22);
  428.             } else {
  429.                var40 = (double)0.0F;
  430.                if (var18 >= (double)0.0F) {
  431.                   var31 = (double)0.0F;
  432.                   if (var4 != null) {
  433.                      var4.set(var0);
  434.                   }
  435.  
  436.                   if (var5 != null) {
  437.                      var5.set(var2);
  438.                   }
  439.  
  440.                   if (var6 != null) {
  441.                      var6[0] = var31;
  442.                      var6[1] = var40;
  443.                   }
  444.  
  445.                   return DIST(var22);
  446.                } else {
  447.                   var31 = -var18 / var12;
  448.                   if (var4 != null) {
  449.                      var4.scaleAdd(var31, var1, var0);
  450.                   }
  451.  
  452.                   if (var5 != null) {
  453.                      var5.set(var2);
  454.                   }
  455.  
  456.                   if (var6 != null) {
  457.                      var6[0] = var31;
  458.                      var6[1] = var40;
  459.                   }
  460.  
  461.                   return DIST(var18 * var31 + var22);
  462.                }
  463.             }
  464.          } else if (var40 >= (double)0.0F) {
  465.             var31 = (double)0.0F;
  466.             if (var48 >= (double)0.0F) {
  467.                var40 = (double)0.0F;
  468.                if (var4 != null) {
  469.                   var4.set(var0);
  470.                }
  471.  
  472.                if (var5 != null) {
  473.                   var5.set(var2);
  474.                }
  475.  
  476.                if (var6 != null) {
  477.                   var6[0] = var31;
  478.                   var6[1] = var40;
  479.                }
  480.  
  481.                return DIST(var22);
  482.             } else {
  483.                var40 = -var48 / var16;
  484.                if (var4 != null) {
  485.                   var4.set(var0);
  486.                }
  487.  
  488.                if (var5 != null) {
  489.                   var5.scaleAdd(var40, var3, var2);
  490.                }
  491.  
  492.                if (var6 != null) {
  493.                   var6[0] = var31;
  494.                   var6[1] = var40;
  495.                }
  496.  
  497.                return DIST(var48 * var40 + var22);
  498.             }
  499.          } else if (var18 < (double)0.0F) {
  500.             var31 = -var18 / var12;
  501.             var40 = (double)0.0F;
  502.             if (var4 != null) {
  503.                var4.scaleAdd(var31, var1, var0);
  504.             }
  505.  
  506.             if (var5 != null) {
  507.                var5.set(var2);
  508.             }
  509.  
  510.             if (var6 != null) {
  511.                var6[0] = var31;
  512.                var6[1] = var40;
  513.             }
  514.  
  515.             return DIST(var18 * var31 + var22);
  516.          } else {
  517.             var31 = (double)0.0F;
  518.             if (var48 >= (double)0.0F) {
  519.                var40 = (double)0.0F;
  520.                if (var4 != null) {
  521.                   var4.set(var0);
  522.                }
  523.  
  524.                if (var5 != null) {
  525.                   var5.set(var2);
  526.                }
  527.  
  528.                if (var6 != null) {
  529.                   var6[0] = var31;
  530.                   var6[1] = var40;
  531.                }
  532.  
  533.                return DIST(var22);
  534.             } else {
  535.                var40 = -var48 / var16;
  536.                if (var4 != null) {
  537.                   var4.set(var0);
  538.                }
  539.  
  540.                if (var5 != null) {
  541.                   var5.scaleAdd(var40, var3, var2);
  542.                }
  543.  
  544.                if (var6 != null) {
  545.                   var6[0] = var31;
  546.                   var6[1] = var40;
  547.                }
  548.  
  549.                return DIST(var48 * var40 + var22);
  550.             }
  551.          }
  552.       } else if (var14 > (double)0.0F) {
  553.          double var39 = (double)0.0F;
  554.          if (var18 >= (double)0.0F) {
  555.             double var30 = (double)0.0F;
  556.             if (var4 != null) {
  557.                var4.set(var0);
  558.             }
  559.  
  560.             if (var5 != null) {
  561.                var5.set(var2);
  562.             }
  563.  
  564.             if (var6 != null) {
  565.                var6[0] = var30;
  566.                var6[1] = var39;
  567.             }
  568.  
  569.             return DIST(var22);
  570.          } else {
  571.             double var29 = -var18 / var12;
  572.             if (var4 != null) {
  573.                var4.scaleAdd(var29, var1, var0);
  574.             }
  575.  
  576.             if (var5 != null) {
  577.                var5.set(var2);
  578.             }
  579.  
  580.             if (var6 != null) {
  581.                var6[0] = var29;
  582.                var6[1] = var39;
  583.             }
  584.  
  585.             return DIST(var18 * var29 + var22);
  586.          }
  587.       } else if (var18 >= (double)0.0F) {
  588.          double var20 = var3.dot(var11);
  589.          double var28 = (double)0.0F;
  590.          double var38 = -var20 / var16;
  591.          if (var4 != null) {
  592.             var4.set(var0);
  593.          }
  594.  
  595.          if (var5 != null) {
  596.             var5.scaleAdd(var38, var3, var2);
  597.          }
  598.  
  599.          if (var6 != null) {
  600.             var6[0] = var28;
  601.             var6[1] = var38;
  602.          }
  603.  
  604.          return DIST(var20 * var38 + var22);
  605.       } else {
  606.          double var7 = -var18 / var12;
  607.          double var9 = (double)0.0F;
  608.          if (var4 != null) {
  609.             var4.scaleAdd(var7, var1, var0);
  610.          }
  611.  
  612.          if (var5 != null) {
  613.             var5.set(var2);
  614.          }
  615.  
  616.          if (var6 != null) {
  617.             var6[0] = var7;
  618.             var6[1] = var9;
  619.          }
  620.  
  621.          return DIST(var18 * var7 + var22);
  622.       }
  623.    }
  624.  
  625.    public static double pointToRay(Point3d var0, Point3d var1, Vector3d var2) {
  626.       return pointToRay(var0, var1, var2, (Point3d)null, (double[])null);
  627.    }
  628.  
  629.    public static double pointToRay(Point3d var0, Point3d var1, Vector3d var2, Point3d var3, double[] var4) {
  630.       Vector3d var7 = new Vector3d();
  631.       var7.sub(var0, var1);
  632.       double var5 = var2.dot(var7);
  633.       if (var5 <= (double)0.0F) {
  634.          var5 = (double)0.0F;
  635.          if (var3 != null) {
  636.             var3.set(var1);
  637.          }
  638.  
  639.          if (var4 != null) {
  640.             var4[0] = var5;
  641.          }
  642.       } else {
  643.          var5 /= var2.dot(var2);
  644.          var7.scaleAdd(-var5, var2, var7);
  645.          if (var3 != null) {
  646.             var3.scaleAdd(var5, var2, var1);
  647.          }
  648.  
  649.          if (var4 != null) {
  650.             var4[0] = var5;
  651.          }
  652.       }
  653.  
  654.       return var7.dot(var7);
  655.    }
  656.  
  657.    public static double pointToSegment(Point3d var0, Point3d var1, Point3d var2) {
  658.       return pointToSegment(var0, var1, var2, (Point3d)null, (double[])null);
  659.    }
  660.  
  661.    public static double pointToSegment(Point3d var0, Point3d var1, Point3d var2, Point3d var3, double[] var4) {
  662.       Vector3d var7 = new Vector3d();
  663.       var7.sub(var2, var1);
  664.       Vector3d var8 = new Vector3d();
  665.       var8.sub(var0, var1);
  666.       double var5 = var7.dot(var8);
  667.       if (var5 <= (double)0.0F) {
  668.          var5 = (double)0.0F;
  669.          if (var3 != null) {
  670.             var3.set(var1);
  671.          }
  672.  
  673.          if (var4 != null) {
  674.             var4[0] = var5;
  675.          }
  676.       } else {
  677.          double var9 = var7.dot(var7);
  678.          if (var5 >= var9) {
  679.             var5 = (double)1.0F;
  680.             var8.sub(var7);
  681.             if (var3 != null) {
  682.                var3.set(var2);
  683.             }
  684.  
  685.             if (var4 != null) {
  686.                var4[0] = var5;
  687.             }
  688.          } else {
  689.             var5 /= var9;
  690.             var8.scaleAdd(-var5, var7, var8);
  691.             if (var3 != null) {
  692.                var3.scaleAdd(var5, var7, var1);
  693.             }
  694.  
  695.             if (var4 != null) {
  696.                var4[0] = var5;
  697.             }
  698.          }
  699.       }
  700.  
  701.       return var8.dot(var8);
  702.    }
  703.  
  704.    public static double segmentToSegment(Point3d var0, Point3d var1, Point3d var2, Point3d var3) {
  705.       return segmentToSegment(var0, var1, var2, var3, (Point3d)null, (Point3d)null, (double[])null);
  706.    }
  707.  
  708.    public static double segmentToSegment(Point3d var0, Point3d var1, Point3d var2, Point3d var3, Point3d var4, Point3d var5, double[] var6) {
  709.       Vector3d var11 = new Vector3d();
  710.       var11.sub(var0, var2);
  711.       Vector3d var12 = new Vector3d();
  712.       var12.sub(var1, var0);
  713.       Vector3d var13 = new Vector3d();
  714.       var13.sub(var3, var2);
  715.       double var14 = var12.dot(var12);
  716.       double var16 = -var12.dot(var13);
  717.       double var18 = var13.dot(var13);
  718.       double var20 = var12.dot(var11);
  719.       double var24 = var11.dot(var11);
  720.       double var26 = Math.abs(var14 * var18 - var16 * var16);
  721.       if (var26 >= 1.0E-5) {
  722.          double var93 = -var13.dot(var11);
  723.          double var37 = var16 * var93 - var18 * var20;
  724.          double var66 = var16 * var20 - var14 * var93;
  725.          if (var37 >= (double)0.0F) {
  726.             if (var37 <= var26) {
  727.                if (var66 >= (double)0.0F) {
  728.                   if (var66 <= var26) {
  729.                      double var30 = (double)1.0F / var26;
  730.                      var37 *= var30;
  731.                      var66 *= var30;
  732.                      if (var4 != null) {
  733.                         var4.scaleAdd(var37, var12, var0);
  734.                      }
  735.  
  736.                      if (var5 != null) {
  737.                         var5.scaleAdd(var66, var13, var2);
  738.                      }
  739.  
  740.                      if (var6 != null) {
  741.                         var6[0] = var37;
  742.                         var6[1] = var66;
  743.                      }
  744.  
  745.                      return DIST(var37 * (var14 * var37 + var16 * var66 + (double)2.0F * var20) + var66 * (var16 * var37 + var18 * var66 + (double)2.0F * var93) + var24);
  746.                   } else {
  747.                      var66 = (double)1.0F;
  748.                      double var99 = var16 + var20;
  749.                      if (var99 >= (double)0.0F) {
  750.                         var37 = (double)0.0F;
  751.                         if (var4 != null) {
  752.                            var4.set(var0);
  753.                         }
  754.  
  755.                         if (var5 != null) {
  756.                            var5.set(var3);
  757.                         }
  758.  
  759.                         if (var6 != null) {
  760.                            var6[0] = var37;
  761.                            var6[1] = var66;
  762.                         }
  763.  
  764.                         return DIST(var18 + (double)2.0F * var93 + var24);
  765.                      } else if (-var99 >= var14) {
  766.                         var37 = (double)1.0F;
  767.                         if (var4 != null) {
  768.                            var4.set(var1);
  769.                         }
  770.  
  771.                         if (var5 != null) {
  772.                            var5.set(var3);
  773.                         }
  774.  
  775.                         if (var6 != null) {
  776.                            var6[0] = var37;
  777.                            var6[1] = var66;
  778.                         }
  779.  
  780.                         return DIST(var14 + var18 + var24 + (double)2.0F * (var93 + var99));
  781.                      } else {
  782.                         var37 = -var99 / var14;
  783.                         if (var4 != null) {
  784.                            var4.scaleAdd(var37, var12, var0);
  785.                         }
  786.  
  787.                         if (var5 != null) {
  788.                            var5.set(var3);
  789.                         }
  790.  
  791.                         if (var6 != null) {
  792.                            var6[0] = var37;
  793.                            var6[1] = var66;
  794.                         }
  795.  
  796.                         return DIST(var99 * var37 + var18 + (double)2.0F * var93 + var24);
  797.                      }
  798.                   }
  799.                } else {
  800.                   var66 = (double)0.0F;
  801.                   if (var20 >= (double)0.0F) {
  802.                      var37 = (double)0.0F;
  803.                      if (var4 != null) {
  804.                         var4.set(var0);
  805.                      }
  806.  
  807.                      if (var5 != null) {
  808.                         var5.set(var2);
  809.                      }
  810.  
  811.                      if (var6 != null) {
  812.                         var6[0] = var37;
  813.                         var6[1] = var66;
  814.                      }
  815.  
  816.                      return DIST(var24);
  817.                   } else if (-var20 >= var14) {
  818.                      var37 = (double)1.0F;
  819.                      if (var4 != null) {
  820.                         var4.set(var1);
  821.                      }
  822.  
  823.                      if (var5 != null) {
  824.                         var5.set(var2);
  825.                      }
  826.  
  827.                      if (var6 != null) {
  828.                         var6[0] = var37;
  829.                         var6[1] = var66;
  830.                      }
  831.  
  832.                      return DIST(var14 + (double)2.0F * var20 + var24);
  833.                   } else {
  834.                      var37 = -var20 / var14;
  835.                      if (var4 != null) {
  836.                         var4.scaleAdd(var37, var12, var0);
  837.                      }
  838.  
  839.                      if (var5 != null) {
  840.                         var5.set(var2);
  841.                      }
  842.  
  843.                      if (var6 != null) {
  844.                         var6[0] = var37;
  845.                         var6[1] = var66;
  846.                      }
  847.  
  848.                      return DIST(var20 * var37 + var24);
  849.                   }
  850.                }
  851.             } else if (var66 >= (double)0.0F) {
  852.                if (var66 <= var26) {
  853.                   var37 = (double)1.0F;
  854.                   double var98 = var16 + var93;
  855.                   if (var98 >= (double)0.0F) {
  856.                      var66 = (double)0.0F;
  857.                      if (var4 != null) {
  858.                         var4.set(var1);
  859.                      }
  860.  
  861.                      if (var5 != null) {
  862.                         var5.set(var2);
  863.                      }
  864.  
  865.                      if (var6 != null) {
  866.                         var6[0] = var37;
  867.                         var6[1] = var66;
  868.                      }
  869.  
  870.                      return DIST(var14 + (double)2.0F * var20 + var24);
  871.                   } else if (-var98 >= var18) {
  872.                      var66 = (double)1.0F;
  873.                      if (var4 != null) {
  874.                         var4.set(var1);
  875.                      }
  876.  
  877.                      if (var5 != null) {
  878.                         var5.set(var3);
  879.                      }
  880.  
  881.                      if (var6 != null) {
  882.                         var6[0] = var37;
  883.                         var6[1] = var66;
  884.                      }
  885.  
  886.                      return DIST(var14 + var18 + var24 + (double)2.0F * (var20 + var98));
  887.                   } else {
  888.                      var66 = -var98 / var18;
  889.                      if (var4 != null) {
  890.                         var4.set(var1);
  891.                      }
  892.  
  893.                      if (var5 != null) {
  894.                         var5.scaleAdd(var66, var13, var2);
  895.                      }
  896.  
  897.                      if (var6 != null) {
  898.                         var6[0] = var37;
  899.                         var6[1] = var66;
  900.                      }
  901.  
  902.                      return DIST(var98 * var66 + var14 + (double)2.0F * var20 + var24);
  903.                   }
  904.                } else {
  905.                   double var96 = var16 + var20;
  906.                   if (-var96 <= var14) {
  907.                      var66 = (double)1.0F;
  908.                      if (var96 >= (double)0.0F) {
  909.                         var37 = (double)0.0F;
  910.                         if (var4 != null) {
  911.                            var4.set(var0);
  912.                         }
  913.  
  914.                         if (var5 != null) {
  915.                            var5.set(var3);
  916.                         }
  917.  
  918.                         if (var6 != null) {
  919.                            var6[0] = var37;
  920.                            var6[1] = var66;
  921.                         }
  922.  
  923.                         return DIST(var18 + (double)2.0F * var93 + var24);
  924.                      } else {
  925.                         var37 = -var96 / var14;
  926.                         if (var4 != null) {
  927.                            var4.scaleAdd(var37, var12, var0);
  928.                         }
  929.  
  930.                         if (var5 != null) {
  931.                            var5.set(var3);
  932.                         }
  933.  
  934.                         if (var6 != null) {
  935.                            var6[0] = var37;
  936.                            var6[1] = var66;
  937.                         }
  938.  
  939.                         return DIST(var96 * var37 + var18 + (double)2.0F * var93 + var24);
  940.                      }
  941.                   } else {
  942.                      var37 = (double)1.0F;
  943.                      var96 = var16 + var93;
  944.                      if (var96 >= (double)0.0F) {
  945.                         var66 = (double)0.0F;
  946.                         if (var4 != null) {
  947.                            var4.set(var1);
  948.                         }
  949.  
  950.                         if (var5 != null) {
  951.                            var5.set(var2);
  952.                         }
  953.  
  954.                         if (var6 != null) {
  955.                            var6[0] = var37;
  956.                            var6[1] = var66;
  957.                         }
  958.  
  959.                         return DIST(var14 + (double)2.0F * var20 + var24);
  960.                      } else if (-var96 >= var18) {
  961.                         var66 = (double)1.0F;
  962.                         if (var4 != null) {
  963.                            var4.set(var1);
  964.                         }
  965.  
  966.                         if (var5 != null) {
  967.                            var5.set(var3);
  968.                         }
  969.  
  970.                         if (var6 != null) {
  971.                            var6[0] = var37;
  972.                            var6[1] = var66;
  973.                         }
  974.  
  975.                         return DIST(var14 + var18 + var24 + (double)2.0F * (var20 + var96));
  976.                      } else {
  977.                         var66 = -var96 / var18;
  978.                         if (var4 != null) {
  979.                            var4.set(var1);
  980.                         }
  981.  
  982.                         if (var5 != null) {
  983.                            var5.scaleAdd(var66, var13, var2);
  984.                         }
  985.  
  986.                         if (var6 != null) {
  987.                            var6[0] = var37;
  988.                            var6[1] = var66;
  989.                         }
  990.  
  991.                         return DIST(var96 * var66 + var14 + (double)2.0F * var20 + var24);
  992.                      }
  993.                   }
  994.                }
  995.             } else if (-var20 < var14) {
  996.                var66 = (double)0.0F;
  997.                if (var20 >= (double)0.0F) {
  998.                   var37 = (double)0.0F;
  999.                   if (var4 != null) {
  1000.                      var4.set(var0);
  1001.                   }
  1002.  
  1003.                   if (var5 != null) {
  1004.                      var5.set(var2);
  1005.                   }
  1006.  
  1007.                   if (var6 != null) {
  1008.                      var6[0] = var37;
  1009.                      var6[1] = var66;
  1010.                   }
  1011.  
  1012.                   return DIST(var24);
  1013.                } else {
  1014.                   var37 = -var20 / var14;
  1015.                   if (var4 != null) {
  1016.                      var4.scaleAdd(var37, var12, var0);
  1017.                   }
  1018.  
  1019.                   if (var5 != null) {
  1020.                      var5.set(var2);
  1021.                   }
  1022.  
  1023.                   if (var6 != null) {
  1024.                      var6[0] = var37;
  1025.                      var6[1] = var66;
  1026.                   }
  1027.  
  1028.                   return DIST(var20 * var37 + var24);
  1029.                }
  1030.             } else {
  1031.                var37 = (double)1.0F;
  1032.                double var95 = var16 + var93;
  1033.                if (var95 >= (double)0.0F) {
  1034.                   var66 = (double)0.0F;
  1035.                   if (var4 != null) {
  1036.                      var4.set(var1);
  1037.                   }
  1038.  
  1039.                   if (var5 != null) {
  1040.                      var5.set(var2);
  1041.                   }
  1042.  
  1043.                   if (var6 != null) {
  1044.                      var6[0] = var37;
  1045.                      var6[1] = var66;
  1046.                   }
  1047.  
  1048.                   return DIST(var14 + (double)2.0F * var20 + var24);
  1049.                } else if (-var95 >= var18) {
  1050.                   var66 = (double)1.0F;
  1051.                   if (var4 != null) {
  1052.                      var4.set(var1);
  1053.                   }
  1054.  
  1055.                   if (var5 != null) {
  1056.                      var5.set(var3);
  1057.                   }
  1058.  
  1059.                   if (var6 != null) {
  1060.                      var6[0] = var37;
  1061.                      var6[1] = var66;
  1062.                   }
  1063.  
  1064.                   return DIST(var14 + var18 + var24 + (double)2.0F * (var20 + var95));
  1065.                } else {
  1066.                   var66 = -var95 / var18;
  1067.                   if (var4 != null) {
  1068.                      var4.set(var1);
  1069.                   }
  1070.  
  1071.                   if (var5 != null) {
  1072.                      var5.scaleAdd(var66, var13, var2);
  1073.                   }
  1074.  
  1075.                   if (var6 != null) {
  1076.                      var6[0] = var37;
  1077.                      var6[1] = var66;
  1078.                   }
  1079.  
  1080.                   return DIST(var95 * var66 + var14 + (double)2.0F * var20 + var24);
  1081.                }
  1082.             }
  1083.          } else if (var66 >= (double)0.0F) {
  1084.             if (var66 <= var26) {
  1085.                var37 = (double)0.0F;
  1086.                if (var93 >= (double)0.0F) {
  1087.                   var66 = (double)0.0F;
  1088.                   if (var4 != null) {
  1089.                      var4.set(var0);
  1090.                   }
  1091.  
  1092.                   if (var5 != null) {
  1093.                      var5.set(var2);
  1094.                   }
  1095.  
  1096.                   if (var6 != null) {
  1097.                      var6[0] = var37;
  1098.                      var6[1] = var66;
  1099.                   }
  1100.  
  1101.                   return DIST(var24);
  1102.                } else if (-var93 >= var18) {
  1103.                   var66 = (double)1.0F;
  1104.                   if (var4 != null) {
  1105.                      var4.set(var0);
  1106.                   }
  1107.  
  1108.                   if (var5 != null) {
  1109.                      var5.set(var3);
  1110.                   }
  1111.  
  1112.                   if (var6 != null) {
  1113.                      var6[0] = var37;
  1114.                      var6[1] = var66;
  1115.                   }
  1116.  
  1117.                   return DIST(var18 + (double)2.0F * var93 + var24);
  1118.                } else {
  1119.                   var66 = -var93 / var18;
  1120.                   if (var4 != null) {
  1121.                      var4.set(var0);
  1122.                   }
  1123.  
  1124.                   if (var5 != null) {
  1125.                      var5.scaleAdd(var66, var13, var2);
  1126.                   }
  1127.  
  1128.                   if (var6 != null) {
  1129.                      var6[0] = var37;
  1130.                      var6[1] = var66;
  1131.                   }
  1132.  
  1133.                   return DIST(var93 * var66 + var24);
  1134.                }
  1135.             } else {
  1136.                double var94 = var16 + var20;
  1137.                if (var94 < (double)0.0F) {
  1138.                   var66 = (double)1.0F;
  1139.                   if (-var94 >= var14) {
  1140.                      var37 = (double)1.0F;
  1141.                      if (var4 != null) {
  1142.                         var4.set(var1);
  1143.                      }
  1144.  
  1145.                      if (var5 != null) {
  1146.                         var5.set(var3);
  1147.                      }
  1148.  
  1149.                      if (var6 != null) {
  1150.                         var6[0] = var37;
  1151.                         var6[1] = var66;
  1152.                      }
  1153.  
  1154.                      return DIST(var14 + var18 + var24 + (double)2.0F * (var93 + var94));
  1155.                   } else {
  1156.                      var37 = -var94 / var14;
  1157.                      if (var4 != null) {
  1158.                         var4.scaleAdd(var37, var12, var0);
  1159.                      }
  1160.  
  1161.                      if (var5 != null) {
  1162.                         var5.set(var3);
  1163.                      }
  1164.  
  1165.                      if (var6 != null) {
  1166.                         var6[0] = var37;
  1167.                         var6[1] = var66;
  1168.                      }
  1169.  
  1170.                      return DIST(var94 * var37 + var18 + (double)2.0F * var93 + var24);
  1171.                   }
  1172.                } else {
  1173.                   var37 = (double)0.0F;
  1174.                   if (var93 >= (double)0.0F) {
  1175.                      var66 = (double)0.0F;
  1176.                      if (var4 != null) {
  1177.                         var4.set(var0);
  1178.                      }
  1179.  
  1180.                      if (var5 != null) {
  1181.                         var5.set(var2);
  1182.                      }
  1183.  
  1184.                      if (var6 != null) {
  1185.                         var6[0] = var37;
  1186.                         var6[1] = var66;
  1187.                      }
  1188.  
  1189.                      return DIST(var24);
  1190.                   } else if (-var93 >= var18) {
  1191.                      var66 = (double)1.0F;
  1192.                      if (var4 != null) {
  1193.                         var4.set(var0);
  1194.                      }
  1195.  
  1196.                      if (var5 != null) {
  1197.                         var5.set(var3);
  1198.                      }
  1199.  
  1200.                      if (var6 != null) {
  1201.                         var6[0] = var37;
  1202.                         var6[1] = var66;
  1203.                      }
  1204.  
  1205.                      return DIST(var18 + (double)2.0F * var93 + var24);
  1206.                   } else {
  1207.                      var66 = -var93 / var18;
  1208.                      if (var4 != null) {
  1209.                         var4.set(var0);
  1210.                      }
  1211.  
  1212.                      if (var5 != null) {
  1213.                         var5.scaleAdd(var66, var13, var2);
  1214.                      }
  1215.  
  1216.                      if (var6 != null) {
  1217.                         var6[0] = var37;
  1218.                         var6[1] = var66;
  1219.                      }
  1220.  
  1221.                      return DIST(var93 * var66 + var24);
  1222.                   }
  1223.                }
  1224.             }
  1225.          } else if (var20 < (double)0.0F) {
  1226.             var66 = (double)0.0F;
  1227.             if (-var20 >= var14) {
  1228.                var37 = (double)1.0F;
  1229.                if (var4 != null) {
  1230.                   var4.set(var1);
  1231.                }
  1232.  
  1233.                if (var5 != null) {
  1234.                   var5.set(var2);
  1235.                }
  1236.  
  1237.                if (var6 != null) {
  1238.                   var6[0] = var37;
  1239.                   var6[1] = var66;
  1240.                }
  1241.  
  1242.                return DIST(var14 + (double)2.0F * var20 + var24);
  1243.             } else {
  1244.                var37 = -var20 / var14;
  1245.                if (var4 != null) {
  1246.                   var4.scaleAdd(var37, var12, var0);
  1247.                }
  1248.  
  1249.                if (var5 != null) {
  1250.                   var5.set(var2);
  1251.                }
  1252.  
  1253.                if (var6 != null) {
  1254.                   var6[0] = var37;
  1255.                   var6[1] = var66;
  1256.                }
  1257.  
  1258.                return DIST(var20 * var37 + var24);
  1259.             }
  1260.          } else {
  1261.             var37 = (double)0.0F;
  1262.             if (var93 >= (double)0.0F) {
  1263.                var66 = (double)0.0F;
  1264.                if (var4 != null) {
  1265.                   var4.set(var0);
  1266.                }
  1267.  
  1268.                if (var5 != null) {
  1269.                   var5.set(var2);
  1270.                }
  1271.  
  1272.                if (var6 != null) {
  1273.                   var6[0] = var37;
  1274.                   var6[1] = var66;
  1275.                }
  1276.  
  1277.                return DIST(var24);
  1278.             } else if (-var93 >= var18) {
  1279.                var66 = (double)1.0F;
  1280.                if (var4 != null) {
  1281.                   var4.set(var0);
  1282.                }
  1283.  
  1284.                if (var5 != null) {
  1285.                   var5.set(var3);
  1286.                }
  1287.  
  1288.                if (var6 != null) {
  1289.                   var6[0] = var37;
  1290.                   var6[1] = var66;
  1291.                }
  1292.  
  1293.                return DIST(var18 + (double)2.0F * var93 + var24);
  1294.             } else {
  1295.                var66 = -var93 / var18;
  1296.                if (var4 != null) {
  1297.                   var4.set(var0);
  1298.                }
  1299.  
  1300.                if (var5 != null) {
  1301.                   var5.scaleAdd(var66, var13, var2);
  1302.                }
  1303.  
  1304.                if (var6 != null) {
  1305.                   var6[0] = var37;
  1306.                   var6[1] = var66;
  1307.                }
  1308.  
  1309.                return DIST(var93 * var66 + var24);
  1310.             }
  1311.          }
  1312.       } else if (var16 > (double)0.0F) {
  1313.          if (var20 >= (double)0.0F) {
  1314.             double var36 = (double)0.0F;
  1315.             double var65 = (double)0.0F;
  1316.             if (var4 != null) {
  1317.                var4.set(var0);
  1318.             }
  1319.  
  1320.             if (var5 != null) {
  1321.                var5.set(var2);
  1322.             }
  1323.  
  1324.             if (var6 != null) {
  1325.                var6[0] = var36;
  1326.                var6[1] = var65;
  1327.             }
  1328.  
  1329.             return DIST(var24);
  1330.          } else if (-var20 <= var14) {
  1331.             double var35 = -var20 / var14;
  1332.             double var64 = (double)0.0F;
  1333.             if (var4 != null) {
  1334.                var4.scaleAdd(var35, var12, var0);
  1335.             }
  1336.  
  1337.             if (var5 != null) {
  1338.                var5.set(var2);
  1339.             }
  1340.  
  1341.             if (var6 != null) {
  1342.                var6[0] = var35;
  1343.                var6[1] = var64;
  1344.             }
  1345.  
  1346.             return DIST(var20 * var35 + var24);
  1347.          } else {
  1348.             double var92 = -var13.dot(var11);
  1349.             double var34 = (double)1.0F;
  1350.             double var28 = var14 + var20;
  1351.             if (-var28 >= var16) {
  1352.                double var63 = (double)1.0F;
  1353.                if (var4 != null) {
  1354.                   var4.set(var1);
  1355.                }
  1356.  
  1357.                if (var5 != null) {
  1358.                   var5.set(var3);
  1359.                }
  1360.  
  1361.                if (var6 != null) {
  1362.                   var6[0] = var34;
  1363.                   var6[1] = var63;
  1364.                }
  1365.  
  1366.                return DIST(var14 + var18 + var24 + (double)2.0F * (var16 + var20 + var92));
  1367.             } else {
  1368.                double var62 = -var28 / var16;
  1369.                if (var4 != null) {
  1370.                   var4.set(var1);
  1371.                }
  1372.  
  1373.                if (var5 != null) {
  1374.                   var5.scaleAdd(var62, var13, var2);
  1375.                }
  1376.  
  1377.                if (var6 != null) {
  1378.                   var6[0] = var34;
  1379.                   var6[1] = var62;
  1380.                }
  1381.  
  1382.                return DIST(var14 + (double)2.0F * var20 + var24 + var62 * (var18 * var62 + (double)2.0F * (var16 + var92)));
  1383.             }
  1384.          }
  1385.       } else if (-var20 >= var14) {
  1386.          double var33 = (double)1.0F;
  1387.          double var61 = (double)0.0F;
  1388.          if (var4 != null) {
  1389.             var4.set(var1);
  1390.          }
  1391.  
  1392.          if (var5 != null) {
  1393.             var5.set(var2);
  1394.          }
  1395.  
  1396.          if (var6 != null) {
  1397.             var6[0] = var33;
  1398.             var6[1] = var61;
  1399.          }
  1400.  
  1401.          return DIST(var14 + (double)2.0F * var20 + var24);
  1402.       } else if (var20 <= (double)0.0F) {
  1403.          double var32 = -var20 / var14;
  1404.          double var60 = (double)0.0F;
  1405.          if (var4 != null) {
  1406.             var4.scaleAdd(var32, var12, var0);
  1407.          }
  1408.  
  1409.          if (var5 != null) {
  1410.             var5.set(var2);
  1411.          }
  1412.  
  1413.          if (var6 != null) {
  1414.             var6[0] = var32;
  1415.             var6[1] = var60;
  1416.          }
  1417.  
  1418.          return DIST(var20 * var32 + var24);
  1419.       } else {
  1420.          double var22 = -var13.dot(var11);
  1421.          double var7 = (double)0.0F;
  1422.          if (var20 >= -var16) {
  1423.             double var59 = (double)1.0F;
  1424.             if (var4 != null) {
  1425.                var4.set(var0);
  1426.             }
  1427.  
  1428.             if (var5 != null) {
  1429.                var5.set(var3);
  1430.             }
  1431.  
  1432.             if (var6 != null) {
  1433.                var6[0] = var7;
  1434.                var6[1] = var59;
  1435.             }
  1436.  
  1437.             return DIST(var18 + (double)2.0F * var22 + var24);
  1438.          } else {
  1439.             double var9 = -var20 / var16;
  1440.             if (var4 != null) {
  1441.                var4.set(var0);
  1442.             }
  1443.  
  1444.             if (var5 != null) {
  1445.                var5.scaleAdd(var9, var13, var2);
  1446.             }
  1447.  
  1448.             if (var6 != null) {
  1449.                var6[0] = var7;
  1450.                var6[1] = var9;
  1451.             }
  1452.  
  1453.             return DIST(var24 + var9 * ((double)2.0F * var22 + var18 * var9));
  1454.          }
  1455.       }
  1456.    }
  1457. }
  1458.