I gave a lightning talk about this repository at JuliaCon2023!
You can make a holdable smooth surface model with this repository.
The main part of this project is how to determine a planer shape from a strip on the target curved surface. In mathematics, this mapping is called "embedding". We determined the embedding by minimizing its elastic strain energy. This is the meaning of "Elastic Surface Embedding".
The definition must consist of parametric mapping and its domain. For example, a paraboloid can be parametrized as below.
The domain will be split into
This is the main part. Split the surface into strips, and compute the embeddings.
using ElasticSurfaceEmbedding
using IntervalSets
using StaticArrays
# Overload the shape definition
ElasticSurfaceEmbedding.surface(x,y) = SVector(x, y, x^2+y^2)
# (1) split the surface into strips
dom = [(-1..1, (i-1)/10..i/10) for i in 1:10]
# (2) Embed the strips onto a plane
res = auto_allsteps(dom)
export_pinned_steps("paraboloid", res)
For more information, read this document.
The image below is a result for the domain
The output files are in SVG format. After editing the SVG files, you can print the graphics or cut papers with a laser cutting machine.
This is the final step. Cut papers into strips, and weave them into the surface.
Print Appendix B from my paper on arXiv, and make your own surface model. Laser cutting machine is useful, but it's not necessary. |
---|
Clone this repository, and run the Julia code or Wolfram code! Any issues and pull requests are welcomed. |
---|
Read our paper on arXiv. Here's our theoretical framework: ・Mathematical model: Nonlinear elasticity on Riemannian manifold ・Geometric representation: B-spline manifold ・Numerical analysis: Galerkin method, Newton-Raphson method |
---|
Follow my twitter account. Visit my website. Read my paper on arXiv. |
---|