Hyperbolic paraboloid

Source code notebook

Weaving a simple curved surface with negative curvature.

Load packages

using IntervalSets
using BasicBSpline
using StaticArrays
using ElasticSurfaceEmbedding

Define the shape of the surface

ElasticSurfaceEmbedding.𝒑₍₀₎(u¹,u²) = SVector(u¹, u², u¹^2-u²^2)
n = 10
D(i,n) = (-1.0..1.0, (i-1)/n..i/n)
D (generic function with 1 method)

Compute the shape of the embeddings

steptree = ElasticSurfaceEmbedding.StepTree()
for i in 1:10
    initial_state!(steptree, D(i,n))
    newton_onestep!(steptree, fixingmethod=:fix3points)
    newton_onestep!(steptree)
    newton_onestep!(steptree)
    newton_onestep!(steptree)
    newton_onestep!(steptree)
    refinement!(steptree, p₊=(0,1), k₊=suggest_knotvector(steptree))
    newton_onestep!(steptree)
    newton_onestep!(steptree)
    pin!(steptree)
end

Export the shapes in SVG format

export_pinned_steps("hyperbolic_paraboloid", steptree, xlims=(-2,2), ylims=(-2,2), unitlength=(100,"mm"), mesh=(20,1))
10-element Vector{String}:
 "hyperbolic_paraboloid/pinned/pinned-9.svg"
 "hyperbolic_paraboloid/pinned/pinned-18.svg"
 "hyperbolic_paraboloid/pinned/pinned-27.svg"
 "hyperbolic_paraboloid/pinned/pinned-36.svg"
 "hyperbolic_paraboloid/pinned/pinned-45.svg"
 "hyperbolic_paraboloid/pinned/pinned-54.svg"
 "hyperbolic_paraboloid/pinned/pinned-63.svg"
 "hyperbolic_paraboloid/pinned/pinned-72.svg"
 "hyperbolic_paraboloid/pinned/pinned-81.svg"
 "hyperbolic_paraboloid/pinned/pinned-90.svg"


This page was generated using DemoCards.jl and Literate.jl.