X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=moebius2.git;a=blobdiff_plain;f=output.c;h=f64b22cedc1623cc6769c5b5ad57580a0f00bd8c;hp=f8fdd3b595a5250f345146b2d6c38e18c1267bff;hb=6df67fc7061e6fae41fec8c05b9e49e4e393c733;hpb=62eac09041f09319ed3abf08ea78c1695003f5a5 diff --git a/output.c b/output.c index f8fdd3b..f64b22c 100644 --- a/output.c +++ b/output.c @@ -12,6 +12,7 @@ */ /* * ./output-64 t.stl + * ./output-125 t.stl 0.1 50 * meshlab t.stl */ /* @@ -148,7 +149,7 @@ static void outfacet(int rev, const OutVertex *a, const OutVertex *b, const OutVertex *c); typedef int int_map(int); -static int defs_aroundmap_swap(int around) { return NDEF-around; } +static int defs_aroundmap_swap(int around) { return NDEF-1-around; } static int int_identity_function(int i) { return i; } static void normalise_thick(double a[D3]) { @@ -196,7 +197,7 @@ static double outvertex_coord_check(double value) { static void compute_outvertices(void) { int v0,k,side,ab,x,y; - FOR_VERTEX(v0) { + FOR_VERTEX(v0, INNER) { for (ab=0; ab<2; ab++) { int v1= EDGE_END2(v0, ab?5:0); int v2= EDGE_END2(v0, ab?0:1); @@ -210,7 +211,7 @@ static void compute_outvertices(void) { K Ok(ovAB[v0][ab][1], centroid[k] - normal[k]); } } - FOR_VERTEX(v0) { + FOR_VERTEX(v0, INNER) { int vw= EDGE_END2(v0,3); int vnw= EDGE_END2(v0,2); int vsw= EDGE_END2(v0,4); @@ -233,7 +234,7 @@ static void compute_outvertices(void) { K Ok(ovC[v0][side], in[v0][k] + adjust[k]); } } - FOR_RIM_VERTEX(y,x,v0) { + FOR_RIM_VERTEX(y,x,v0, INNER) { double rim[D3], inner[D3], radius_cos[D3], radius_sin[D3]; int vback, vfwd, around; @@ -274,14 +275,16 @@ static void compute_outvertices(void) { sin(angle) * radius_sin[k]); } } - FOR_RIM_VERTEX(y,x,v0) { + FOR_RIM_VERTEX(y,x,v0, INNER) { int vfwd= EDGE_END2(v0,0); assert(vfwd >= 0); - int around; - for (around=0; around=0); gs= ovG [v0 & XMASK][rimy]; defs= ovDEF[v0 & XMASK][rimy]; - defs1= ovDEF[v1 & XMASK][rimy]; + defs1= ovDEF[v1 & XMASK][!!(v1 & ~XMASK)]; defs1aroundmap= vertices_span_join_p(v0,v1) ? defs_aroundmap_swap : int_identity_function; @@ -371,8 +374,11 @@ static void blank_outvertices(void) { static void transform_outvertex_array(int n, OutVertex ovX[n]) { int i, k; - for (i=0; i