Skip to content

Commit

Permalink
fix wrapping
Browse files Browse the repository at this point in the history
  • Loading branch information
hqm committed Jun 13, 2014
1 parent e2afa4b commit b78eca7
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 29 deletions.
17 changes: 16 additions & 1 deletion PBox.pde
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ void setup() {
cam = new PeasyCam(this, 500);
cam.setMinimumDistance(100);
cam.setMaximumDistance(10000);
rule.initConfig();
setRule("BusyBox");
stashCells(clock);

frameRate(10000);
Expand Down Expand Up @@ -528,6 +528,21 @@ void drawCursor() {
hint(ENABLE_DEPTH_TEST);
}


void addCoords(Coord a, Coord b, Coord result) {

Coord.add(a, b, result);
if (wrap) {
result.wrap(gridSize);
}
}
void subCoords(Coord a, Coord b, Coord result) {
Coord.sub(a, b, result);
if (wrap) {
result.wrap(gridSize);
}
}

// When proposing to swap cell A and B
// we push the target loc B onto the location A's swaps list.
//
Expand Down
17 changes: 9 additions & 8 deletions Rule1.pde
Original file line number Diff line number Diff line change
Expand Up @@ -75,22 +75,22 @@ class Rule1 extends Rule {
void busybox(ArrayList<Cell> cells, Swap s1, Swap s2) {

for (Cell cell : cells) {
Coord.add(cell.loc, s1.a, p1); // p1 := cell + delta1
Coord.add(cell.loc, s1.b, p2); // p1 := cell + delta1
addCoords(cell.loc, s1.a, p1); // p1 := cell + delta1
addCoords(cell.loc, s1.b, p2); // p1 := cell + delta1

Coord.add(cell.loc, s2.a, p3); // p1 := cell + delta1
Coord.add(cell.loc, s2.b, p4); // p1 := cell + delta1
addCoords(cell.loc, s2.a, p3); // p1 := cell + delta1
addCoords(cell.loc, s2.b, p4); // p1 := cell + delta1

if (cell.state != 0) {
proposeSwap(p1, p2);
proposeSwap(p3, p4);
}

Coord.sub(cell.loc, s1.a, p1); // p1 := cell + delta1
Coord.sub(cell.loc, s1.b, p2); // p1 := cell + delta1
subCoords(cell.loc, s1.a, p1); // p1 := cell + delta1
subCoords(cell.loc, s1.b, p2); // p1 := cell + delta1

Coord.sub(cell.loc, s2.a, p3); // p1 := cell + delta1
Coord.sub(cell.loc, s2.b, p4); // p1 := cell + delta1
subCoords(cell.loc, s2.a, p3); // p1 := cell + delta1
subCoords(cell.loc, s2.b, p4); // p1 := cell + delta1

if (cell.state != 0) {
proposeSwap(p1, p2);
Expand All @@ -103,6 +103,7 @@ class Rule1 extends Rule {
void initConfig() {

addCircular("X", 10,10, 10, 20);
println("WTF");
}

void addCircular(String orientation, int x, int y, int z, int d) {
Expand Down
43 changes: 23 additions & 20 deletions Rule3.pde
Original file line number Diff line number Diff line change
Expand Up @@ -76,51 +76,54 @@ class Rule3 extends Rule {

switch(phase) {
case 0:
rule3(cells, dxy1, dxy2, testxy);
rule3(cells, dxy1, dxy2);
break;
case 1:
rule3(cells, dxz1, dxz2, testxz);
rule3(cells, dxz1, dxz2);
break;
case 2:
rule3(cells, dyz1, dyz2, testyz);
rule3(cells, dyz1, dyz2);
break;
case 3:
rule3(cells, dxy1, dxy2, testxy);
rule3(cells, dxy1, dxy2);
break;
case 4:
rule3(cells, dxz1, dxz2, testxz);
rule3(cells, dxz1, dxz2);
break;
case 5:
rule3(cells, dyz1, dyz2, testyz);
rule3(cells, dyz1, dyz2);
break;
}
}

Coord ptest = new Coord(0, 0, 0);
Coord ptest1 = new Coord(0, 0, 0);
Coord ptest2 = new Coord(0, 0, 0);

void rule3(ArrayList<Cell> cells, Swap s1, Swap s2, Coord ctest) {
void rule3(ArrayList<Cell> cells, Swap s1, Swap s2) {

for (Cell cell : cells) {
Coord.add(cell.loc, ctest, ptest);
Cell cell2 = grid.get(ptest);

if (cell2 == null || cell.state != cell2.state ) {
Coord.add(cell.loc, s1.a, p1); // p1 := cell + delta1
Coord.add(cell.loc, s1.b, p2); // p1 := cell + delta1
addCoords(cell.loc, s1.a, p1); // p1 := cell + delta1
addCoords(cell.loc, s1.b, p2); // p1 := cell + delta1
Cell cell1 = grid.get(p1);
Cell cell2 = grid.get(p2);

if ((cell2 != null && cell.state != cell2.state ) || (cell1 != null && cell.state != cell1.state )) {
addCoords(cell.loc, s1.a, p1); // p1 := cell + delta1
addCoords(cell.loc, s1.b, p2); // p1 := cell + delta1
proposeSwap(p1, p2);


Coord.sub(cell.loc, s1.a, p1); // p1 := cell + delta1
Coord.sub(cell.loc, s1.b, p2); // p1 := cell + delta1
subCoords(cell.loc, s1.a, p1); // p1 := cell + delta1
subCoords(cell.loc, s1.b, p2); // p1 := cell + delta1
proposeSwap(p1, p2);
} else {

Coord.add(cell.loc, s2.a, p1); // p1 := cell + delta1
Coord.add(cell.loc, s2.b, p2); // p1 := cell + delta1
addCoords(cell.loc, s2.a, p1); // p1 := cell + delta1
addCoords(cell.loc, s2.b, p2); // p1 := cell + delta1
proposeSwap(p1, p2);

Coord.sub(cell.loc, s2.a, p1); // p1 := cell + delta1
Coord.sub(cell.loc, s2.b, p2); // p1 := cell + delta1
subCoords(cell.loc, s2.a, p1); // p1 := cell + delta1
subCoords(cell.loc, s2.b, p2); // p1 := cell + delta1
proposeSwap(p1, p2);
}
}
Expand Down

0 comments on commit b78eca7

Please sign in to comment.