From 5d0b42b667890027686cfefeee7f27c80bc3d04f Mon Sep 17 00:00:00 2001
From: Adrian Mariano <avm4@cornell.edu>
Date: Thu, 16 Sep 2021 16:56:04 -0400
Subject: [PATCH] switch order of sections in vnf

---
 vnf.scad | 114 +++++++++++++++++++++++++++----------------------------
 1 file changed, 57 insertions(+), 57 deletions(-)

diff --git a/vnf.scad b/vnf.scad
index 58afed8..f7620bb 100644
--- a/vnf.scad
+++ b/vnf.scad
@@ -21,63 +21,6 @@
 EMPTY_VNF = [[],[]];  // The standard empty VNF with no vertices or faces.
 
 
-// Function: is_vnf()
-// Usage:
-//   bool = is_vnf(x);
-// Description:
-//   Returns true if the given value looks like a VNF structure.
-function is_vnf(x) =
-    is_list(x) &&
-    len(x)==2 &&
-    is_list(x[0]) &&
-    is_list(x[1]) &&
-    (x[0]==[] || (len(x[0])>=3 && is_vector(x[0][0]))) &&
-    (x[1]==[] || is_vector(x[1][0]));
-
-
-// Function: is_vnf_list()
-// Description: Returns true if the given value looks passingly like a list of VNF structures.
-function is_vnf_list(x) = is_list(x) && all([for (v=x) is_vnf(v)]);
-
-
-// Function: vnf_vertices()
-// Description: Given a VNF structure, returns the list of vertex points.
-function vnf_vertices(vnf) = vnf[0];
-
-
-// Function: vnf_faces()
-// Description: Given a VNF structure, returns the list of faces, where each face is a list of indices into the VNF vertex list.
-function vnf_faces(vnf) = vnf[1];
-
-
-// Function: vnf_get_vertex()
-// Usage:
-//   vvnf = vnf_get_vertex(vnf, p);
-// Description:
-//   Finds the index number of the given vertex point `p` in the given VNF structure `vnf`.
-//   If said point does not already exist in the VNF vertex list, it is added to the returned VNF.
-//   Returns: `[INDEX, VNF]` where INDEX is the index of the point in the returned VNF's vertex list,
-//   and VNF is the possibly modified new VNF structure.  If `p` is given as a list of points, then
-//   the returned INDEX will be a list of indices.
-// Arguments:
-//   vnf = The VNF structue to get the point index from.
-//   p = The point, or list of points to get the index of.
-// Example:
-//   vnf1 = vnf_get_vertex(p=[3,5,8]);  // Returns: [0, [[[3,5,8]],[]]]
-//   vnf2 = vnf_get_vertex(vnf1, p=[3,2,1]);  // Returns: [1, [[[3,5,8],[3,2,1]],[]]]
-//   vnf3 = vnf_get_vertex(vnf2, p=[3,5,8]);  // Returns: [0, [[[3,5,8],[3,2,1]],[]]]
-//   vnf4 = vnf_get_vertex(vnf3, p=[[1,3,2],[3,2,1]]);  // Returns: [[1,2], [[[3,5,8],[3,2,1],[1,3,2]],[]]]
-function vnf_get_vertex(vnf=EMPTY_VNF, p) =
-    let(
-        isvec = is_vector(p),
-        pts = isvec? [p] : p,
-        res = set_union(vnf[0], pts, get_indices=true)
-    ) [
-        (isvec? res[0][0] : res[0]),
-        [ res[1], vnf[1] ]
-    ];
-
-
 // Section: Constructing VNFs
 
 // Function: vnf_vertex_array()
@@ -438,6 +381,63 @@ function vnf_merge(vnfs, cleanup=false, eps=EPSILON) =
     [nverts, nfaces];
 
 
+// Function: is_vnf()
+// Usage:
+//   bool = is_vnf(x);
+// Description:
+//   Returns true if the given value looks like a VNF structure.
+function is_vnf(x) =
+    is_list(x) &&
+    len(x)==2 &&
+    is_list(x[0]) &&
+    is_list(x[1]) &&
+    (x[0]==[] || (len(x[0])>=3 && is_vector(x[0][0]))) &&
+    (x[1]==[] || is_vector(x[1][0]));
+
+
+// Function: is_vnf_list()
+// Description: Returns true if the given value looks passingly like a list of VNF structures.
+function is_vnf_list(x) = is_list(x) && all([for (v=x) is_vnf(v)]);
+
+
+// Function: vnf_vertices()
+// Description: Given a VNF structure, returns the list of vertex points.
+function vnf_vertices(vnf) = vnf[0];
+
+
+// Function: vnf_faces()
+// Description: Given a VNF structure, returns the list of faces, where each face is a list of indices into the VNF vertex list.
+function vnf_faces(vnf) = vnf[1];
+
+
+// Function: vnf_get_vertex()
+// Usage:
+//   vvnf = vnf_get_vertex(vnf, p);
+// Description:
+//   Finds the index number of the given vertex point `p` in the given VNF structure `vnf`.
+//   If said point does not already exist in the VNF vertex list, it is added to the returned VNF.
+//   Returns: `[INDEX, VNF]` where INDEX is the index of the point in the returned VNF's vertex list,
+//   and VNF is the possibly modified new VNF structure.  If `p` is given as a list of points, then
+//   the returned INDEX will be a list of indices.
+// Arguments:
+//   vnf = The VNF structue to get the point index from.
+//   p = The point, or list of points to get the index of.
+// Example:
+//   vnf1 = vnf_get_vertex(p=[3,5,8]);  // Returns: [0, [[[3,5,8]],[]]]
+//   vnf2 = vnf_get_vertex(vnf1, p=[3,2,1]);  // Returns: [1, [[[3,5,8],[3,2,1]],[]]]
+//   vnf3 = vnf_get_vertex(vnf2, p=[3,5,8]);  // Returns: [0, [[[3,5,8],[3,2,1]],[]]]
+//   vnf4 = vnf_get_vertex(vnf3, p=[[1,3,2],[3,2,1]]);  // Returns: [[1,2], [[[3,5,8],[3,2,1],[1,3,2]],[]]]
+function vnf_get_vertex(vnf=EMPTY_VNF, p) =
+    let(
+        isvec = is_vector(p),
+        pts = isvec? [p] : p,
+        res = set_union(vnf[0], pts, get_indices=true)
+    ) [
+        (isvec? res[0][0] : res[0]),
+        [ res[1], vnf[1] ]
+    ];
+
+
 
 // Section: Altering the VNF Internals