/** * Writes a triangle in ASCII. * * @param writer The file we want to write in. * @param triangle The triangle to write. */ private static void writeASCIITriangle(final BufferedWriter writer, final Triangle triangle) { try { // Write facet normal : to begin a triangle with writing its normal. String s1 = "\nfacet normal"; s1 += " " + triangle.getNormal().x + " " + triangle.getNormal().y + " " + triangle.getNormal().z; // Write outer loop : to begin to write the three points. writer.write(s1 + "\nouter loop"); // Write the three points. for (final Point p : triangle.getPoints()) { writer.write("\nvertex" + " " + p.getX() + " " + p.getY() + " " + p.getZ()); } // Write the end of the facet. writer.write("\nendloop\nendfacet"); } catch (final java.io.IOException e) { e.printStackTrace(); } }
/** * Writes a triangle in the binary format. * * @param writer the writer which writes in the file * @param triangle the triangle to write * @throws IOException if the writer throws an error */ private static void writeBinaryTriangle(final OutputStream writer, final Triangle triangle) throws IOException { // Write first the normal. WriterSTL.writeInGoodOrder(writer, triangle.getNormal().getX()); WriterSTL.writeInGoodOrder(writer, triangle.getNormal().getY()); WriterSTL.writeInGoodOrder(writer, triangle.getNormal().getZ()); // And the three points after. WriterSTL.writeInGoodOrder(writer, triangle.getP1().getX()); WriterSTL.writeInGoodOrder(writer, triangle.getP1().getY()); WriterSTL.writeInGoodOrder(writer, triangle.getP1().getZ()); WriterSTL.writeInGoodOrder(writer, triangle.getP2().getX()); WriterSTL.writeInGoodOrder(writer, triangle.getP2().getY()); WriterSTL.writeInGoodOrder(writer, triangle.getP2().getZ()); WriterSTL.writeInGoodOrder(writer, triangle.getP3().getX()); WriterSTL.writeInGoodOrder(writer, triangle.getP3().getY()); WriterSTL.writeInGoodOrder(writer, triangle.getP3().getZ()); writer.write(new byte[2]); }