public void doWrite() { // try { // some declarations in the POV file NumberFormat frm = FloatFormat.getInstance(); // tree scale w.println( "#declare " + povrayDeclarationPrefix + "height = " + frm.format(tree.getHeight()) + ";"); // leaf declaration if (tree.getLeafCount() != 0) writeLeafDeclaration(); // stems progress.beginPhase("writing stem objects", tree.getStemCount()); for (int level = 0; level < tree.getLevels(); level++) { w.println("#declare " + povrayDeclarationPrefix + "stems_" + level + " = union {"); POVConeStemWriter writer = new POVConeStemWriter(this, /*params,*/ level); tree.traverseTree(writer); w.println("}"); } // leaves if (tree.getLeafCount() != 0) { progress.beginPhase("writing leaf objects", tree.getLeafCount()); w.println("#declare " + povrayDeclarationPrefix + "leaves = union {"); POVConeLeafWriter lexporter = new POVConeLeafWriter(this, /*params*/ tree); tree.traverseTree(lexporter); w.println("}"); } else { // empty declaration w.println("#declare " + povrayDeclarationPrefix + "leaves = sphere {<0,0,0>,0}"); } progress.endPhase(); // all stems together w.println("#declare " + povrayDeclarationPrefix + "stems = union {"); for (int level = 0; level < tree.getLevels(); level++) { w.println(" object {" + povrayDeclarationPrefix + "stems_" + level + "}"); } w.println("}"); w.flush(); // } catch (Exception e) { // e.printStackTrace(); // System.err.println(e); // throw new ExportError(e.getMessage()); // } }