commit d35bfdb13382a9941588a931e59348b2649fb869
parent c816b128dc62d65551118f843bc039094b516014
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Fri, 23 Sep 2022 15:58:57 +0200
Make ascii stl output gmsh-compatible
Diffstat:
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/src/scad.c b/src/scad.c
@@ -23,6 +23,7 @@
#include <rsys/cstr.h>
#include <rsys/rsys.h>
#include <rsys/str.h>
+#include <rsys/double3.h>
#include <rsys/float3.h>
#include <rsys/stretchy_array.h>
@@ -58,26 +59,26 @@ write_ascii_stl
size_t j;
for(j = 0; j < coord_n[i]; j += 9) {
int k;
- float n[3] = { 0,0,0 }, zero[3] = { 0,0,0 };
- float vtx[3][3];
- float tmp[3], edge1[3], edge2[3];;
- f3_set_d3(vtx[0], coord[i]+j+0);
- f3_set_d3(vtx[1], coord[i]+j+3);
- f3_set_d3(vtx[2], coord[i]+j+6);
- f3_sub(edge1, vtx[1], vtx[0]);
- f3_sub(edge2, vtx[2], vtx[0]);
- f3_cross(tmp, edge1, edge2);
- if(f3_eq(tmp, zero)) {
+ double n[3] = { 0,0,0 }, zero[3] = { 0,0,0 };
+ double vtx[3][3];
+ double tmp[3], edge1[3], edge2[3];;
+ d3_set(vtx[0], coord[i]+j+0);
+ d3_set(vtx[1], coord[i]+j+3);
+ d3_set(vtx[2], coord[i]+j+6);
+ d3_sub(edge1, vtx[1], vtx[0]);
+ d3_sub(edge2, vtx[2], vtx[0]);
+ d3_cross(tmp, edge1, edge2);
+ if(d3_eq(tmp, zero)) {
log_error(get_device(), "Error: nul triangle in exported geometry.\n");
res = RES_BAD_ARG;
goto error;
}
- f3_normalize(n, tmp);
+ d3_normalize(n, tmp);
OKP(fprintf(stl_file, " facet normal %g %g %g\n", SPLIT3(n)));
OKP(fprintf(stl_file, " outer loop\n"));
for(k = 0; k < 3; k++) {
- OKP(fprintf(stl_file, " vertex %g %g %g\n", SPLIT3(vtx[k])));
+ OKP(fprintf(stl_file, " vertex %.16g %.16g %.16g\n", SPLIT3(vtx[k])));
}
OKP(fprintf(stl_file, " endloop\n"));
OKP(fprintf(stl_file, " endfacet\n"));