{"id":995,"date":"2021-08-23T02:08:30","date_gmt":"2021-08-23T02:08:30","guid":{"rendered":"http:\/\/summergeometry.org\/sgi2021\/?p=995"},"modified":"2021-08-23T02:08:32","modified_gmt":"2021-08-23T02:08:32","slug":"minimal-surfaces-but-periodic","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2021\/minimal-surfaces-but-periodic\/","title":{"rendered":"Minimal Surfaces, But Periodic"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><em>By Zhecheng Wang, Zeltzyn Guadalupe Montes Rosales, and Olga Gu\u021ban<\/em><\/p>\n\n\n\n<p class=\"has-text-align-center\" style=\"font-size:13px\">Note: This post describes work that has occurred between August 9 and August 20. The project will continue for a third week; more details to come.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">I. <em>Introduction<\/em><\/h4>\n\n\n\n<p>For the past two weeks we had the pleasure of working with <a href=\"https:\/\/nmwsharp.com\/\">Nicholas Sharp<\/a>, <a href=\"https:\/\/www.cs.utexas.edu\/users\/evouga\/\">Etienne Vouga<\/a>, <a href=\"https:\/\/www.cs.utexas.edu\/~josh\/\">Josh Vekhter<\/a>, and <a href=\"https:\/\/www.egr.msu.edu\/~amezqui3\/aboutme.html\">Erik Amezquita<\/a>. We learned about a special type of minimal surfaces: <em>triply-periodic<\/em> <em>minimal surfaces<\/em>. Their name stems from their repeating pattern. Broadly speaking, a <a href=\"https:\/\/encyclopediaofmath.org\/wiki\/Minimal_surface\"><em>minimal surface<\/em><\/a> minimizes its surface area. This is equivalent to having zero mean curvature. A <a href=\"https:\/\/en.wikipedia.org\/wiki\/Triply_periodic_minimal_surface\"><em>triply-periodic minimal surface<\/em><\/a> (TPMS) is a surface in \\(\\mathbb{R}^{3}\\) that is invariant under a rank-3 lattice of translations.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"563\" height=\"263\" src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image-16.png\" alt=\"\" class=\"wp-image-1079\" srcset=\"https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image-16.png 563w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image-16-300x140.png 300w\" sizes=\"auto, (max-width: 563px) 100vw, 563px\" \/><figcaption>Figure 1. (Left) A Minimal Surface [<a href=\"https:\/\/en.wikipedia.org\/wiki\/Minimal_surface\">source<\/a>] and (right) a TPMS [<a href=\"https:\/\/en.wikipedia.org\/wiki\/Triply_periodic_minimal_surface\">source<\/a>]. <\/figcaption><\/figure><\/div>\n\n\n\n<p>Let\u2019s talk about <em>nonmanifold<\/em> surfaces. \u201cManifold\u201d is a geometry term that means: every local region of the surface looks like the plane (more formally &#8212; it is homeomorphic to a subset of Euclidean space). <a href=\"https:\/\/transmagic.com\/what-is-non-manifold-geometry\/\" data-type=\"URL\" data-id=\"https:\/\/transmagic.com\/what-is-non-manifold-geometry\/\"><em>Non-<\/em>manifold<\/a> then allows for parts of the surface that do not look like the plane, such as T-junctions. Within the context of triangle meshes, a nonmanifold surface is a surface where more than 3 faces share an edge.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">II. <em>What We Did<\/em><\/h4>\n\n\n\n<p>First, we read and studied the 1993 <a href=\"http:\/\/page.math.tu-berlin.de\/~pinkall\/forDownload\/preprint049.pdf\">paper<\/a> by Pinkhall and Polthier that describes the algorithm for generating minimal surfaces. Our next goal was to <em>generate<\/em> minimal surfaces. Initially, we used pinned (Dirichlet) boundary conditions and regular manifold shapes. After ensuring that our code worked on manifold surfaces, we tested it on non-manifold input.&nbsp;<\/p>\n\n\n\n<p>Additionally, our team members learned how to use Blender. It has been a very enjoyable process, and the work was deeply satisfying, because of the embedded mathematical ideas intertwined with the artistic components.&nbsp;<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">III. <em>Reading the Pinkall Paper<\/em><\/h4>\n\n\n\n<p><em>&#8220;Computing Discrete Minimal Surfaces and Their Conjugates,&#8221;<\/em> by Ulrich Pinkall and Konrad Polthier, is the classic paper on this subject; it introduces the iterative scheme we used to find minimal surfaces. Reading this paper was our first step in this project. The algorithm that finds a discrete locally area-minimizing surface is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Take the initial surface \\(M_0\\) with boundary \\(\u2202M_0\\) as first approximation of M. Set i to 0. <\/li><li>Compute the next surface \\(M_i\\) by solving the linear Dirichlet problem  $$ \\min_{M} \\frac{1}{2}\\int_{M_{i}}|\\nabla (f:M_{i} \\to M)|^{2}$$<\/li><li>Set i to i+1 and continue with step 2.&nbsp;<\/li><\/ul>\n\n\n\n<p>The stopping condition is \\(|\\text{area}(M_i)-\\text{area}(M_{i+1})|&lt;\\epsilon\\). In our case, we used a maximum number of iterations, set by the user, as a stopping condition. <\/p>\n\n\n\n<p>There are additional subtleties that must be considered (such as &#8220;what to do with degenerate triangles?&#8221;), but since we did not implement them &#8212; their discussion is beyond the scope of this post. <\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">IV. <em>Adding Periodic Boundary Conditions<\/em><\/h4>\n\n\n\n<p>This is, at its core, an optimization problem. To ensure that the optimization works, the boundary conditions have to be periodic instead of fixed in space. This is because we are enforcing a set of boundary conditions on periodic shapes &#8212; that is, tiling in a 3D space.&nbsp;<\/p>\n\n\n\n<h6 class=\"has-text-align-center wp-block-heading\">IV(a). Matching Vertices<\/h6>\n\n\n\n<p>First, we need to check every two pairs of vertices in the mesh. We are looking&nbsp; to see if they have identical coordinates in two dimensions, but are separated by exactly two units in the third dimension. When we find such pairs of vertices, we classify them to \\(G_x\\), \\(G_y\\), or \\(G_z\\). Note that we only store unique pairs.<\/p>\n\n\n\n<h6 class=\"has-text-align-center wp-block-heading\">IV(b). Laplacian Smoothness at the Boundary Vertices<\/h6>\n\n\n\n<p>Instead of using the discrete Laplacian, now we introduce a sparse matrix K to adjust our smoothness term based on the new boundary:<\/p>\n\n\n\n<p>$$\\min_{x}x^T(L^TK^TKL)x \\text{ s.t. } x[b] = x_0[b].$$<\/p>\n\n\n\n<p>Next, we construct the matrix K, which is a sparse square matrix of dimension #vertices by #vertices. To do so, we set \\(K(i,i) = 1\\), \\(K(i,j) = 1\\), and set the \\(j\\)th row entries to 0 for every pair of unique matched boundary vertices. For every interior vertex \\(i\\), we set \\(K(i,i) = 1\\).<\/p>\n\n\n\n<h6 class=\"has-text-align-center wp-block-heading\">IV(c). Aligning Boundary Vertices<\/h6>\n\n\n\n<p>Now we no longer want to pin boundary vertices to their original location in space. Instead, we want to allow our vertices to move, while the opposite sides of the boundary still match. To do that, we need to adjust the existing constraint term and to include additional linear constraints \\(Ax=b\\).<\/p>\n\n\n\n<p>Therefore, we add two sets of linear constraints to our linear system:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>For any pair of boundary vertices distanced by 2 units in one direction, the new coordinates should differ by 2 units.<\/li><li>For any pair of boundary vertices matched in the two other directions, the new coordinates should differ by 0.<\/li><\/ul>\n\n\n\n<p><span style=\"font-size: revert\">We construct a selection matrix \\(A\\), which is a #pairs of boundary vertices in \\(G\\) by #vertices sparse matrix, to get the distance between any pair of boundary vertices. For every \\(r\\)th row, \\(A(r,i)=1, A(r,j)=-1.\\)$<\/span><\/p>\n\n\n\n<p>Then we need to construct 3 \\(b\\) vectors, each of which is a sparse square matrix of the size [# of vector pairs of boundary vertices in G for a 3D coordinate (x,y,z)]. Based on whether at one given moment we are working with \\(G_x\\), \\(G_y\\), or \\(G_z\\), we enter \\(2\\) for those selected pairs, and \\(0\\) for the rest.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">V.<em> Correct Outcomes<\/em><\/h4>\n\n\n\n<p>Below, we can see the algorithm being correctly implemented. Each video represents a different mesh.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video height=\"990\" style=\"aspect-ratio: 1280 \/ 990;\" width=\"1280\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/21-Aug-2021-142405.mp4\"><\/video><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video height=\"990\" style=\"aspect-ratio: 1280 \/ 990;\" width=\"1280\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/cube_with_fins-2.mp4\"><\/video><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">VI. <em>Aesthetically Pleasing Bugs<\/em><\/h4>\n\n\n\n<p>Nothing is perfect, and coding in Matlab is no exception. We went through many iterations of our code before we got a functional version. Below are some examples of cool-looking bugs we encountered along the way, while testing the code on (what has become) one of our favorite shapes. Each video represents a different bug applied onto the same mesh. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video height=\"1024\" style=\"aspect-ratio: 1024 \/ 1024;\" width=\"1024\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/coolbug1.mp4\"><\/video><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video height=\"1024\" style=\"aspect-ratio: 1024 \/ 1024;\" width=\"1024\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/coolbug2.mp4\"><\/video><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\">VII.<em> Conclusion and Future Work<\/em><\/h4>\n\n\n\n<p>Further work may include studying the physical properties of <em>nonmanifold TPMS<\/em>. It may also include additional basic structural simulations for physical properties, and establishing a comparison between the results for <em>nonmanifold surfaces<\/em> and the existing results for <em>manifold surfaces<\/em>.<\/p>\n\n\n\n<p>Additional goals may be of computational or algebraic nature. For example, one can write scripts to generate many possible initial conditions, then use code to convert the surfaces with each of these conditions into minimal surfaces. An algebraic goal may be to enumerate all possible <em>possibly<\/em>-nonmanifold structures and perhaps categorize them based on their properties. This is, in fact, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Triply_periodic_minimal_surface#Families\">an open problem<\/a>. <\/p>\n\n\n\n<p>The possibilities are truly endless, and potential directions depend on the interests of the group of researchers undertaking this project further. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Zhecheng Wang, Zeltzyn Guadalupe Montes Rosales, and Olga Gu\u021ban Note: This post describes work that has occurred between August 9 and August 20. The project will continue for a third week; more details to come. I. Introduction For the past two weeks we had the pleasure of working with Nicholas Sharp, Etienne Vouga, Josh [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,25],"tags":[],"class_list":["post-995","post","type-post","status-publish","format-standard","hentry","category-math","category-sgi-research-projects"],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts\/995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/comments?post=995"}],"version-history":[{"count":10,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts\/995\/revisions"}],"predecessor-version":[{"id":1215,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts\/995\/revisions\/1215"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/media?parent=995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/categories?post=995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/tags?post=995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}