summaryrefslogtreecommitdiffstats
path: root/layers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers.cpp')
-rw-r--r--layers.cpp67
1 files changed, 0 insertions, 67 deletions
diff --git a/layers.cpp b/layers.cpp
deleted file mode 100644
index f8b3afd..0000000
--- a/layers.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-#include "balls.h"
-
-static vector<Collision> completeGraph(vector<Ball *> balls);
-static vector<Collision> matching(vector<Collision> edges);
-static vector<Collision> diff(vector<Collision> a, vector<Collision> b);
-
-vector<vector<Collision>>
-partitionCollisions(vector<Ball *> balls) {
- vector<vector<Collision>> layers;
-
- vector<Collision> collisions = completeGraph(balls);
- while (!collisions.empty()) {
- cout << "\nadd layer\n";
- cout << "layers.size(): " << layers.size() << "\n";
-
- vector<Collision> layerCollisions = matching(collisions);
- cout << "layer collisions: ";
- for (Collision c : layerCollisions)
- cout << c << " ";
- cout << "\n";
- collisions = diff(collisions, layerCollisions);
-
- vector<Collision> thisLayer;
- for (Collision c : layerCollisions) {
- cout << "create node with " << c << "\n";
- thisLayer.push_back(c);
- }
- cout << "thisLayer.size(): " << thisLayer.size() << "\n";
- layers.push_back(thisLayer);
- }
- return layers;
-}
-
-static vector<Collision>
-completeGraph(vector<Ball *> balls) {
- vector<Collision> edges;
- size_t i, j;
-
- for (i = 0; i < balls.size(); i++)
- for (j = i+1; j < balls.size(); j++)
- edges.push_back(Collision(balls.at(i), balls.at(j)));
- return edges;
-}
-
-static vector<Collision>
-matching(vector<Collision> edges) {
- vector<Collision> matching;
- size_t i;
-
- for (Collision e : edges) {
- for (i = 0; i < matching.size(); i++)
- if (e.b1 == matching[i].b1 || e.b1 == matching[i].b2 || e.b2 == matching[i].b1 || e.b2 == matching[i].b2)
- break;
- if (i == matching.size()) /* no shared vertices */
- matching.push_back(e);
- }
- return matching;
-}
-
-static vector<Collision>
-diff(vector<Collision> a, vector<Collision> b) {
- vector<Collision> diff;
- set_difference(a.begin(), a.end(),
- b.begin(), b.end(),
- inserter(diff, diff.begin()));
- return diff;
-}