{ "cells": [ { "cell_type": "markdown", "source": [ "Weaving a simple curved surface with negative curvature." ], "metadata": {} }, { "cell_type": "markdown", "source": [ "" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Load packages" ], "metadata": {} }, { "outputs": [], "cell_type": "code", "source": [ "using IntervalSets\n", "using BasicBSpline\n", "using StaticArrays\n", "using ElasticSurfaceEmbedding" ], "metadata": {}, "execution_count": 1 }, { "cell_type": "markdown", "source": [ "## Define the shape of the surface" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "D (generic function with 1 method)" }, "metadata": {}, "execution_count": 2 } ], "cell_type": "code", "source": [ "ElasticSurfaceEmbedding.𝒑₍₀₎(u¹,u²) = SVector(u¹, u², u¹^2-u²^2)\n", "n = 10\n", "D(i,n) = (-1.0..1.0, (i-1)/n..i/n)" ], "metadata": {}, "execution_count": 2 }, { "cell_type": "markdown", "source": [ "## Compute the shape of the embeddings" ], "metadata": {} }, { "outputs": [], "cell_type": "code", "source": [ "steptree = ElasticSurfaceEmbedding.StepTree()\n", "for i in 1:10\n", " initial_state!(steptree, D(i,n))\n", " newton_onestep!(steptree, fixingmethod=:fix3points)\n", " newton_onestep!(steptree)\n", " newton_onestep!(steptree)\n", " newton_onestep!(steptree)\n", " newton_onestep!(steptree)\n", " refinement!(steptree, p₊=(0,1), k₊=suggest_knotvector(steptree))\n", " newton_onestep!(steptree)\n", " newton_onestep!(steptree)\n", " pin!(steptree)\n", "end" ], "metadata": {}, "execution_count": 3 }, { "cell_type": "markdown", "source": [ "## Export the shapes in SVG format" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "10-element Vector{String}:\n \"hyperbolic_paraboloid/pinned/pinned-9.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-18.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-27.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-36.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-45.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-54.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-63.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-72.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-81.svg\"\n \"hyperbolic_paraboloid/pinned/pinned-90.svg\"" }, "metadata": {}, "execution_count": 4 } ], "cell_type": "code", "source": [ "export_pinned_steps(\"hyperbolic_paraboloid\", steptree, xlims=(-2,2), ylims=(-2,2), unitlength=(100,\"mm\"), mesh=(20,1))" ], "metadata": {}, "execution_count": 4 }, { "cell_type": "markdown", "source": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" ], "metadata": {} } ], "nbformat_minor": 3, "metadata": { "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.10.4" }, "kernelspec": { "name": "julia-1.10", "display_name": "Julia 1.10.4", "language": "julia" } }, "nbformat": 4 }