fold icon indicating copy to clipboard operation
fold copied to clipboard

Curved crease support

Open edemaine opened this issue 6 years ago • 1 comments

Here is the plan for adding curved crease support to FOLD (probably version 2) via NURBS, based on discussions with Jason, Amanda, Klara:

  • A curved crease is a type of edge.
  • By default, every edge is a straight segment connecting its endpoints.
  • To override this behavior, you must specify an edges_controlPoints field mapping each edge to a list of control points, each of which is a coordinate array.
    • Put null if you want to just an edge as a line segment.
    • Issue: Do we allow a dictionary for just specifying the curved edges?
    • Issue: Does a control point array repeat the first and last control point which are the edge endpoints?
  • By default, every spline is quadratic (right? or linear) and uniform. There are two parallel arrays for overriding this default behavior:
  • edges_degree maps each edge to the degree of the curve (2 for quadratic, 3 for cubic, etc.)
  • edges_knotVector maps each edge to a knot vector.
  • If only edges_degree is specified for an edge, the knot vector defaults to uniform open (rational B-spline): [0, 0, ..., 0, 1, 2, 3, ..., m, m, ..., m] (for appropriate lengths of the ...)
  • If only edges_knotVector is specified, the degree defaults to the knot-vector length minus the control-point-array length minus 1?.
  • We provide a helper to fill in all the implied information (and maybe one to delete implied information).

edemaine avatar Jan 23 '18 08:01 edemaine

With Klara, Matthew, Robby, I had some suggestion for supporting discretized version of curved folds, where

  • each edge could be labeled as a "ruling."
  • "surface" object that is a list of faces (surfaces-faces)
  • single "curved crease" as a list of short discretized creases

The idea is that existing software may ignore the "surface" or "curved crease," then it is just an approximated curved folding. Still, if your software is fancy, you could use this metadata to assign different bending stiffness for simulation or subdivide or simplify the mesh in optimization-based algorithms.

tomtachi avatar May 27 '21 08:05 tomtachi