Browse Source

some changes

jess 8 years ago
parent
commit
d0bb084bf7
1 changed files with 22 additions and 26 deletions
  1. 22 26
      src/ui/view/HolonCanvas.java

+ 22 - 26
src/ui/view/HolonCanvas.java

@@ -47,6 +47,8 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 
 	private Control controller;
 	private Model model;
+	int maxX;
+	int maxY;
 
 	public HolonCanvas(Model mod, Control control) {
 		// Wire up Events
@@ -77,11 +79,10 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 			subnets = controller.getSimManager().getSubNets();
 			subCount = subnets.size();
 			calcCenter();
-			if (bodies.isEmpty()) {
-				createBodies(subCount);
-			} else {
-				addNewBodies(subCount);
-			}
+			maxX = center.width;
+			maxY = center.height;
+			addNewBodies(subCount);
+
 		}
 
 		currentTime = System.currentTimeMillis();
@@ -118,9 +119,13 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 				if (model.getSubNetColors().get(i) == bodies.get(j).getColor()) {
 					bodies.get(j).setRadius(
 							(subnets.get(i).getObjects().size() * 5 + 10) * controller.getHolonBodyScale() / 100);
-					bodies.get(j).setMass(subnets.get(i).getObjects().size() * 5 + 10);
+					bodies.get(j).setMass((float) Math.pow((subnets.get(i).getObjects().size() + 1) * 5, 3));
 					newBodies.add(bodies.get(j));
 					newBodies.get(i).setId(i);
+					if (newBodies.get(i).position.getX() > maxX)
+						maxX = (int) newBodies.get(i).position.getX();
+					if (newBodies.get(i).position.getY() > maxY)
+						maxY = (int) newBodies.get(i).position.getY();
 					break;
 				}
 			}
@@ -128,24 +133,18 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 
 		bodies = newBodies;
 		for (int i = bodies.size(); i < subCount; i++) {
-			HolonBody temp = new HolonBody(center.width+(-1*i), center.height+(-1*i),
-					(subnets.get(i).getObjects().size() * 5 + 10) * controller.getHolonBodyScale() / 100,
-					subnets.get(i).getObjects().size() * 5 + 10, model.getSubNetColors().get(i));
+			float radius = (subnets.get(i).getObjects().size() * 5 + 10) * controller.getHolonBodyScale() / 100;
+			HolonBody temp = new HolonBody(maxX + radius, maxY + radius, radius,
+					(float) Math.pow((subnets.get(i).getObjects().size() + 1) * 5, 3), model.getSubNetColors().get(i));
 			temp.setId(i);
 			bodies.add(temp);
-		}
 
-	}
-
-	// creates the first round of bodies
-	private void createBodies(int subCount) {
-		for (int i = 0; i < subCount; i++) {
-			HolonBody temp = new HolonBody(center.width+(-1*i), center.height+(-1*i),
-					subnets.get(i).getObjects().size() * 5 + 10, subnets.get(i).getObjects().size() * 5 + 10,
-					model.getSubNetColors().get(i));
-			temp.setId(i);
-			bodies.add(temp);
+			if (bodies.get(i).position.getX() > maxX)
+				maxX = (int) newBodies.get(i).position.getX();
+			if (bodies.get(i).position.getY() > maxY)
+				maxY = (int) newBodies.get(i).position.getY();
 		}
+
 	}
 
 	public void render(Graphics g) {
@@ -172,26 +171,23 @@ public class HolonCanvas extends JPanel implements MouseWheelListener {
 		for (int i = 0; i < subCount; i++) {
 			bodies.get(i).position
 					.setX((float) (bodies.get(i).position.getX() + (bodies.get(i).velocity.getX() * (elapsedSeconds))
-							- ((bodies.get(i).position.getX() - center.getWidth()) / (50+subCount))));
+							- ((bodies.get(i).position.getX() - center.getWidth()) / (50 + subCount))));
 			bodies.get(i).position
 					.setY((float) (bodies.get(i).position.getY() + (bodies.get(i).velocity.getY() * (elapsedSeconds))
-							- ((bodies.get(i).position.getY() - center.getHeight()) / (50+subCount))));
+							- ((bodies.get(i).position.getY() - center.getHeight()) / (50 + subCount))));
 
 			if (Math.abs(bodies.get(i).velocity.getX()) < Constants.epsilon)
 				bodies.get(i).velocity.setX(0);
 			if (Math.abs(bodies.get(i).velocity.getY()) < Constants.epsilon)
 				bodies.get(i).velocity.setY(0);
-
 		}
-
 		checkCollisions();
-
 	}
 
 	// Insertion sort for Sweep and Prune
 	public void insertionSort(ArrayList<HolonBody> a) {
 		for (int p = 1; p < subCount; p++) {
-			Comparable tmp = a.get(p);
+			Comparable<HolonBody> tmp = a.get(p);
 			int j = p;
 
 			for (; j > 0 && tmp.compareTo(a.get(j - 1)) < 0; j--)