Subversion Repositories distributed

Rev

Rev 44 | Rev 48 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. package de.viathinksoft.marschall.raumplan.formula;
  2.  
  3. public class FormulaProbe {
  4.  
  5.         private static final double PRECIOUS = 1000;
  6.  
  7.         /**
  8.          * Kollissionsradius für 2D-Raum
  9.          *
  10.          * @param b
  11.          *            Korridorverkleinerungsfaktor
  12.          * @param g
  13.          *            Raumverkleinerungsfaktor
  14.          * @param w
  15.          *            Verhältnis des initialen Korridors mit dem Ursprungsraum
  16.          * @return =0 für Berührung, <0 für Abstand, > für Kollission
  17.          */
  18.         private static double calc_2d(double b, double g, double w) {
  19.                 return (3 - g) / (1 - g) - g + Math.pow(g, 2) - 4 + 2 * w
  20.                                 * (b / (1 - b) - b - Math.pow(b, 2) - 1);
  21.         }
  22.  
  23.         /**
  24.          * Kollissionsradius für 3D-Raum
  25.          *
  26.          * @param b
  27.          *            Korridorverkleinerungsfaktor
  28.          * @param g
  29.          *            Raumverkleinerungsfaktor
  30.          * @param w
  31.          *            Verhältnis des initialen Korridors mit dem Ursprungsraum
  32.          * @return =0 für Berührung, <0 für Abstand, > für Kollission
  33.          */
  34.         private static double calc_3d(double b, double g, double w) {
  35.                 return w * b * (1 / (1 - b) - 1 - b - Math.pow(b, 2)) + 1 / (1 - g) - 1
  36.                                 - g - Math.pow(g, 2) - w;
  37.         }
  38.  
  39.         /**
  40.          * Findet 2D=0 Punkte
  41.          *
  42.          * @param args
  43.          */
  44.         public static void main(String[] args) {
  45.                 for (int bi = 0; bi < PRECIOUS; bi++) {
  46.                         for (int gi = 0; gi < PRECIOUS; gi++) {
  47.                                 for (int wi = 0; wi < PRECIOUS; wi++) {
  48.                                         double b = (double) bi / PRECIOUS;
  49.                                         double g = (double) gi / PRECIOUS;
  50.                                         double w = (double) wi / PRECIOUS;
  51.                                         double r2d = calc_2d(b, g, w);
  52.                                         double r3d = calc_3d(b, g, w);
  53.  
  54.                                         if ((Math.abs(r2d) == 0) /* || (Math.abs(r3d) == 0) */) {
  55.                                                 System.out.println("(b=" + b + ", g=" + g + ", w=" + w
  56.                                                                 + ") = " + r2d + " (2D), " + r3d + " (3D)");
  57.                                         }
  58.                                 }
  59.                         }
  60.                 }
  61.  
  62.                 System.out.println("Beendet");
  63.         }
  64. }
  65.