/** * Replace duplicate of leaf with leaf itself TODO: this should also use known complements * * @param leaf * @param tolerance */ private void replaceAllSameLeaves(RrCSG leaf, double tolerance) { int same; switch (op) { case LEAF: case NULL: case UNIVERSE: // System.out.println("replace_all_same_leaves(): at a leaf!"); break; case UNION: case INTERSECTION: RrHalfPlane hp = leaf.hp; if (c1.op == RrCSGOp.LEAF) { same = RrHalfPlane.same(hp, c1.hp, tolerance); if (same == 0) c1 = leaf; if (same == -1) c1 = leaf.complement(); } else c1.replaceAllSameLeaves(leaf, tolerance); if (c2.op == RrCSGOp.LEAF) { same = RrHalfPlane.same(hp, c2.hp, tolerance); if (same == 0) c2 = leaf; if (same == -1) c2 = leaf.complement(); } else c2.replaceAllSameLeaves(leaf, tolerance); break; default: Debug.e("replace_all_same(): invalid operator."); } }