From 93f616f19c880d4c4648ab30cd22fa54d235d1b9 Mon Sep 17 00:00:00 2001
From: Neil Gershenfeld <gersh@cba.mit.edu>
Date: Sat, 2 Jun 2018 11:15:42 -0400
Subject: [PATCH] wip

---
 modules/mesh/slice | 87 ++++++++++++++++++++++++----------------------
 1 file changed, 45 insertions(+), 42 deletions(-)

diff --git a/modules/mesh/slice b/modules/mesh/slice
index 1a3effa..c109051 100644
--- a/modules/mesh/slice
+++ b/modules/mesh/slice
@@ -402,12 +402,42 @@ function worker() {
          return([x3,y3,z3])
          }
       //
-      // get vars
+      // function to draw line
+      //
+      function line(x0,y0,x1,y1) {
+         var ix0 = Math.floor(w*(x0-xmin)/(xmax-xmin))
+         var iy0 = Math.floor(h*(y0-ymin)/(ymax-ymin))
+         var ix1 = Math.floor(w*(x1-xmin)/(xmax-xmin))
+         var iy1 = Math.floor(h*(y1-ymin)/(ymax-ymin))
+         var dx = ix1-ix0
+         var dy = iy1-iy0
+         console.log(ix0,iy0)
+         buf[(h-1-iy0)*w*4+ix0*4+0] = 255
+         buf[(h-1-iy0)*w*4+ix0*4+1] = 255
+         buf[(h-1-iy0)*w*4+ix0*4+2] = 255
+         }
+      //
+      // get vars from buffer
       //
       var endian = true
       var triangles = view.getUint32(80,endian)
       var size = 80+4+triangles*(4*12+2)
       //
+      // initialize slice image
+      //
+      for (var row = 0; row < h; ++row) {
+         for (var col = 0; col < w; ++col) {
+            r = buf[(h-1-row)*w*4+col*4+0]
+            g = buf[(h-1-row)*w*4+col*4+1]
+            b = buf[(h-1-row)*w*4+col*4+2]
+            a = buf[(h-1-row)*w*4+col*4+3]
+            buf[(h-1-row)*w*4+col*4+0] = 0
+            buf[(h-1-row)*w*4+col*4+1] = 0
+            buf[(h-1-row)*w*4+col*4+2] = 0
+            buf[(h-1-row)*w*4+col*4+3] = 255
+            }
+         }
+      //
       // find triangles crossing the slice
       //
       var segs = []
@@ -437,12 +467,12 @@ function worker() {
          // rotate vertices
          //
          offset += 2
-         var p = [rotate(x0,y0,z0),
+         var v = [rotate(x0,y0,z0),
             rotate(x1,y1,z1),rotate(x2,y2,z2)]
          //
          // sort z
          //
-         p.sort(function(a,b) {
+         v.sort(function(a,b) {
             if (a[2] < b[2])
                return -1
             else if (a[2] > b[2])
@@ -453,60 +483,33 @@ function worker() {
          //
          // check for crossing
          //
-         if ((p[0][2] <= (zmax-depth)) && (p[2][2] >= (zmax-depth))) {
+         if ((v[0][2] <= (zmax-depth)) && (v[2][2] >= (zmax-depth))) {
             count += 1
-            }
-            /*
             //
-            //  crossing found, check for side and save
+            //  crossing found, check for side and stroke
             //
-            if (p[1][2] < z) {
+            line(v[0][0],v[0][1],v[1][0],v[1][1])
+            line(v[1][0],v[1][1],v[2][0],v[2][1])
+            line(v[2][0],v[2][1],v[0][0],v[0][1])
+            if (v[1][2] < (zmax-depth)) {
+               ;
                }
-            else if (p[1][2] > z) {
+            else if (v[1][2] > (zmax-depth)) {
+               ;
                }
             else {
+               ;
                }
             }
-            */
          }
       /*
       //
-      // initialize slice image
-      //
-      for row
-         for col
+      // loop over scan lines and fill interior
       //
-      // loop over scan lines
-      //
-      for row
-         //
-         // find scan line intersections with segments
-        //
-
-         //
-         // perturb vertex intersections
-         //
-
-         //
-         // sort and stroke intersections
-         //
-
+      */
       //
       // output the slice
       //
-      */
-      for (var row = 0; row < h; ++row) {
-         for (var col = 0; col < w; ++col) {
-            r = buf[(h-1-row)*w*4+col*4+0]
-            g = buf[(h-1-row)*w*4+col*4+1]
-            b = buf[(h-1-row)*w*4+col*4+2]
-            a = buf[(h-1-row)*w*4+col*4+3]
-            buf[(h-1-row)*w*4+col*4+0] = row
-            buf[(h-1-row)*w*4+col*4+1] = col
-            buf[(h-1-row)*w*4+col*4+2] = row+col
-            buf[(h-1-row)*w*4+col*4+3] = 255
-            }
-         }
       self.postMessage({count:count,buffer:buf.buffer},[buf.buffer])
       })
    }
-- 
GitLab