Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Curved crease support #15

Open
edemaine opened this issue Jan 23, 2018 · 1 comment
Open

Curved crease support #15

edemaine opened this issue Jan 23, 2018 · 1 comment

Comments

@edemaine
Copy link
Owner

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).
@tomtachi
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants