in commons-geometry-io-euclidean/src/main/java/org/apache/commons/geometry/io/euclidean/threed/stl/TextStlWriter.java [157:187]
public void writeTriangle(final Vector3D p1, final Vector3D p2, final Vector3D p3, final Vector3D normal) {
if (!started) {
throw new IllegalStateException("Cannot write triangle: no solid has been started");
}
write(StlConstants.FACET_START_KEYWORD);
write(SPACE);
writeVector(StlUtils.determineNormal(p1, p2, p3, normal));
writeNewLine();
write(StlConstants.OUTER_KEYWORD);
write(SPACE);
write(StlConstants.LOOP_START_KEYWORD);
writeNewLine();
writeTriangleVertex(p1);
if (StlUtils.pointsAreCounterClockwise(p1, p2, p3, normal)) {
writeTriangleVertex(p2);
writeTriangleVertex(p3);
} else {
writeTriangleVertex(p3);
writeTriangleVertex(p2);
}
write(StlConstants.LOOP_END_KEYWORD);
writeNewLine();
write(StlConstants.FACET_END_KEYWORD);
writeNewLine();
}