From 4e81f4b3cd4335e57bf4a4e42fbcec5ffed3ade1 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner <e12119052@student.tuwien.ac.at> Date: Thu, 9 Jun 2022 14:40:49 +0200 Subject: [PATCH] =?UTF-8?q?=C3=9Cbungstest=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Octree.java | 26 ++++++++++++++++++++++++++ src/Simulation.java | 1 + 2 files changed, 27 insertions(+) diff --git a/src/Octree.java b/src/Octree.java index fe0988c..6cd7107 100644 --- a/src/Octree.java +++ b/src/Octree.java @@ -51,6 +51,12 @@ public class Octree { if (root == null) return; root.draw(cd); } + + public int getNumberOfBalancedRegions() { + if (root == null || !(root instanceof OctreeNode r)) return 0; + + return r.getNumberOfBalancedRegions(); + } } abstract class OctreeItem { @@ -149,6 +155,26 @@ class OctreeNode extends OctreeItem { ((octNum & 4) != 0) ? -1 : 1) .times(this.size / 4)); } + + private boolean isBalanced() { + for (OctreeItem i : children) { + if (!(i instanceof OctreeLeaf)) + return false; + } + return true; + } + + protected int getNumberOfBalancedRegions() { + if (isBalanced()) return 1; + + int c = 0; + for (OctreeItem i : children) { + if (i instanceof OctreeNode n) { + c += n.getNumberOfBalancedRegions(); + } + } + return c; + } } class OctreeLeaf extends OctreeItem { diff --git a/src/Simulation.java b/src/Simulation.java index f426880..8edac04 100644 --- a/src/Simulation.java +++ b/src/Simulation.java @@ -55,6 +55,7 @@ public class Simulation { for (Body body : bodies) { octree.add(body); } + System.out.println(octree.getNumberOfBalancedRegions()); octree.applyForces(bodies, 100); if ((seconds % 60) == 0) {