/** * 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; }
// -------------------------------------------------------- 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); } }
// ------------------------------------------- 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); } }
public FloatList copy() { FloatList outgoing = new FloatList(data); outgoing.count = count; return outgoing; }
public void insert(int index, FloatList list) { insert(index, list.values()); }
public void append(FloatList list) { for (float v : list.values()) { // will concat the list... append(v); } }
/** @nowebref */ public JSONArray(FloatList list) { myArrayList = new ArrayList<Object>(); for (float item : list.values()) { myArrayList.add(new Float(item)); } }
// -------------------------------------------------------- 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); } } }