/** * Descend Tree and insert particle. We're at a cell so * we need to move down the tree. * * @param p the body to insert into the tree * @param xpic * @param l * @param tree the root of the tree * @return the subtree with the new body inserted */ public override Cell loadTree(Body p, MathVector xpic, int l, BTree tree) { // move down one level int si = Node.oldSubindex(xpic, l); Node rt = subp [si]; if (rt != null) { subp [si] = rt.loadTree(p, xpic, l >> 1, tree); } else { subp [si] = p; } return(this); }
/** * Descend Tree and insert particle. We're at a body so we need to * create a cell and attach this body to the cell. * * @param p the body to insert * @param xpic * @param l * @param tree the root of the data structure * @return the subtree with the new body inserted */ public override Cell loadTree(Body p, MathVector xpic, int l, BTree tree) { // create a Cell Cell retval = Cell.makeCell(); int si = subindex(tree, l); // attach this Body node to the cell retval.subp [si] = this; // move down one level si = Node.oldSubindex(xpic, l); Node rt = retval.subp [si]; if (rt != null) { retval.subp [si] = rt.loadTree(p, xpic, l >> 1, tree); } else { retval.subp [si] = p; } return(retval); }