class Field extends Environment { Vector emitters; Field(int max_dimension) { super(max_dimension); emitters = new Vector(); } public void addEmitter(Emitter e) { emitters.add(e); } public boolean isBetterPosition(Tuple pos1, Tuple pos2) { if (pos1 == null && pos2 == null) { return false; } else if (pos1 == null) { return false; } else if (pos2 == null) { return true; } //make the center position the sweet spot //Tuple center_position = ((upper_bounds.add(lower_bounds.multiply(-1))).multiply(.5)).add(lower_bounds); Tuple target_position = new Tuple(3); target_position.setValue(mouseX, 0); target_position.setValue(mouseY, 1); target_position.setValue(0, 2); float score1 = 10 / (target_position.getDistance(pos1) + 1); float score2 = 10 / (target_position.getDistance(pos2) + 1); //tally up score for the influence of each emitter at the location Emitter e; for(int i = 0; i < emitters.size(); i++) { e = (Emitter) emitters.get(i); score1 += e.getEmissionValue(pos1) / (e.getPosition().getDistance(pos1) + 1); score2 += e.getEmissionValue(pos2) / (e.getPosition().getDistance(pos2) + 1); } if (score1 > score2) { return true; } else { return false; } } void update() { Emitter e; for(int i = 0; i < emitters.size(); i++) { e = (Emitter) emitters.get(i); e.update(); } } void display() { Emitter e; for(int i = 0; i < emitters.size(); i++) { e = (Emitter) emitters.get(i); e.display(); } } Vector getEmitters() { return emitters; } int getEmitterCount() { return emitters.size(); } }