Beispiel #1
0
 /**
  * Returns a normalized version of this array. Called getPercent() for consistency with the Dict
  * classes. It's a getter method because it needs to returns a new list (because IntList/Dict
  * can't do percentages or normalization in place on int values).
  */
 public FloatList getPercent() {
   double sum = 0;
   for (float value : array()) {
     sum += value;
   }
   FloatList outgoing = new FloatList(count);
   for (int i = 0; i < count; i++) {
     double percent = data[i] / sum;
     outgoing.set(i, (float) percent);
   }
   return outgoing;
 }
Beispiel #2
0
    // --------------------------------------------------------
    private void calculPositionAndAngle() {

      PVector prev = new PVector(0, 0);
      PVector next;

      for (int i = 0; i < n; i++) {

        next = new PVector();

        // Position
        if (i == 0) {
          next = new PVector(0, 0);
        } else {
          next.x = prev.x + cos(random(angleMini - HALF_PI, angleMax - HALF_PI)) * distance;
          next.y = prev.y + sin(random(angleMini - HALF_PI, angleMax - HALF_PI)) * distance;

          // Angle
          float a = atan2(prev.y - next.y, prev.x - next.x) - HALF_PI;
          angle.append(a);
          if (i == n - 1) lastAngle = a;
        }

        // Add position
        position.add(next);

        distance *= 1.01f;
        prev.set(next);
      }
    }
Beispiel #3
0
    // -------------------------------------------
    public void calcul() {

      // UP - left side
      for (int i = 0; i < position.size(); i++) {

        PVector p = position.get(i);
        PVector pp = new PVector();

        pp.x = cos(angles.get(i) + HALF_PI) * radius[i] + p.x + initPosition.x;
        pp.y = sin(angles.get(i) + HALF_PI) * radius[i] + p.y + initPosition.y;
        pointForm.add(pp);
      }

      // DOWN - right side
      for (int i = position.size() - 1; i >= 0; i--) {

        PVector p = position.get(i);
        PVector pp = new PVector();

        pp.x = cos(angles.get(i) - HALF_PI) * radius[i] + p.x + initPosition.x;
        pp.y = sin(angles.get(i) - HALF_PI) * radius[i] + p.y + initPosition.y;
        pointForm.add(pp);
      }
    }
Beispiel #4
0
 public FloatList copy() {
   FloatList outgoing = new FloatList(data);
   outgoing.count = count;
   return outgoing;
 }
Beispiel #5
0
 public void insert(int index, FloatList list) {
   insert(index, list.values());
 }
Beispiel #6
0
 public void append(FloatList list) {
   for (float v : list.values()) { // will concat the list...
     append(v);
   }
 }
Beispiel #7
0
 /** @nowebref */
 public JSONArray(FloatList list) {
   myArrayList = new ArrayList<Object>();
   for (float item : list.values()) {
     myArrayList.add(new Float(item));
   }
 }
Beispiel #8
0
    // --------------------------------------------------------
    private void calculPositionAndAngle() {

      PVector prev = new PVector(0, 0);
      PVector next = new PVector(0, 0);
      float lastAngle = 0, randomAngle, tempAmplitude;

      // Position
      for (int i = 0; i < n; i++) {

        if (i == 0) {

          position.add(next);

        } else {

          tempAmplitude = amplitude;
          next = new PVector(0, 0);

          do {

            randomAngle = random(-tempAmplitude, tempAmplitude) + lastAngle;
            next.x = prev.x + cos(randomAngle + beginAngle) * distance;
            next.y = prev.y + sin(randomAngle + beginAngle) * distance;
            tempAmplitude += radians(1);
          } while (outside(next, border));

          // Angle
          float a = atan2(prev.y - next.y, prev.x - next.x);
          lastAngle = randomAngle;

          // Add position
          position.add(next);

          // Set prev to next
          prev.set(next);
        }
      }

      // Angle
      for (int i = 0; i < n; i++) {

        float a;

        if (i == 0) {

          // a = atan2(position.get(0).y-position.get(1).y,position.get(0).x-position.get(1).x);
          angle.append(beginAngle - PI);

        } else if (i == n - 1) {

          a =
              atan2(
                  position.get(n - 2).y - position.get(n - 1).y,
                  position.get(n - 2).x - position.get(n - 1).x);
          angle.append(a);

        } else {

          a =
              atan2(
                  position.get(i - 1).y - position.get(i + 1).y,
                  position.get(i - 1).x - position.get(i + 1).x);
          angle.append(a);
        }
      }
    }