{"id":1339,"date":"2021-08-31T03:28:03","date_gmt":"2021-08-31T03:28:03","guid":{"rendered":"http:\/\/summergeometry.org\/sgi2021\/?p=1339"},"modified":"2021-08-31T03:28:05","modified_gmt":"2021-08-31T03:28:05","slug":"minimal-surfaces-but-with-saddle-points","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2021\/minimal-surfaces-but-with-saddle-points\/","title":{"rendered":"Minimal Surfaces, But With Saddle Points"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><em>By Natasha Diederen, Alice Mehalek, Zhecheng Wang, and Olga Gu\u021ban<\/em><\/p>\n\n\n\n<p>This week we worked on extending the results described <a href=\"http:\/\/summergeometry.org\/sgi2021\/minimal-surfaces-but-periodic\/\">here<\/a>. We learned an array of new techniques and enhanced existing skills that we had developed the week(s) before. Here is some of the work we have accomplished since the last blog post.&nbsp;<\/p>\n\n\n\n<h3 class=\"has-text-align-center wp-block-heading\">Tiling<\/h3>\n\n\n\n<p>One of the improvements we made was to create a tiling function which created an \\( n^3 \\) grid of our triply periodic surfaces, so that we were better able to visualise them as a structure. We started off with a surface inside a \\( [-1, 1]^3 \\) cube, and then imagined an \\(n^3\\) grid (pictured below). To make a duplicate of the surface in one of these grid cubes, we considered how much the surface would need to be translated in the \\(x\\), \\(y\\) and \\(z\\) directions. For example to duplicate the original surface in the black cube into the green square, we would need to shift all the \\(x\\)-coordinates in the mesh by two (since the cube is length two in all directions) and leave the \\(y\\)- and \\(z\\)-coordinates unchanged. Similarly, to duplicate the original surface into the purple square, we would need to shift the all \\(x\\)-coordinates in the mesh by two, all the \\(y\\)-coordinates by two, and all the \\(z\\)-coordinates by \\(2n\\).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"992\" src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/tiling-1024x992.png\" alt=\"\" class=\"wp-image-1343\" srcset=\"https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/tiling-1024x992.png 1024w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/tiling-300x291.png 300w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/tiling-768x744.png 768w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/tiling-1200x1162.png 1200w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/tiling.png 1398w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Figure 1. A visualization of the the surface tiling. <\/figcaption><\/figure>\n\n\n\n<p>To copy the surface \\(n^3\\) times into the right grid cubes, we need find all the unique permutations of groups of three vectors chosen from \\((0,2,4, \\dots, 2n)\\) and add them to the vertices matrix of the of the mesh. To update the face data, we add multiples of the number of vertices each time we duplicate into a new cube.&nbsp;<\/p>\n\n\n\n<p>With this function in place, we can now see our triply periodic surfaces morphing as a larger structure.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"646\" style=\"aspect-ratio: 890 \/ 646;\" width=\"890\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/vid1_manif_cube_with_square_holes_2it.mp4\"><\/video><figcaption>Figure 2. A 3x3x3 Tiling of the Surface.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"has-text-align-center wp-block-heading\">Blender<\/h3>\n\n\n\n<p>A skill we continued developing and something we have grown to enjoy, is what we affectionately call \u201cblendering.\u201d To speak in technical terms, we use the open-source software Blender to generate triangle meshes that we, then, use as tests for our code.&nbsp;<\/p>\n\n\n\n<p>For context: Blender is a free and open-source 3D computer graphics software tool set used for a plethora of purposes, such as creating animated films, 3D printed models, motion graphics, virtual reality, and computer games. It includes many features and it, truly, has endless possibilities. We used one small compartment of it: mesh creation and mesh editing, but we look forward to perhaps experiencing more of its possibilities in the future.<\/p>\n\n\n\n<p>We seek to create shapes that are non-manifold; mathematically, this means that there exist local regions in our surface that are not homeomorphic to a subset of the Euclidean space. In other words, non-manifold shapes contain junctions where more than two faces meet at an edge, or more than two faces meet at a vertex without sharing an edge.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"563\" src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-1024x563.png\" alt=\"\" class=\"wp-image-1341\" srcset=\"https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-1024x563.png 1024w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-300x165.png 300w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-768x423.png 768w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-1536x845.png 1536w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-2048x1127.png 2048w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-1200x660.png 1200w, https:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/image_nonmanifold-1980x1089.png 1980w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Figure 3. Manifold versus nonmanifold edges and vertices. <a href=\"http:\/\/www.cs.cmu.edu\/~kmcrane\/Projects\/NonmanifoldLaplace\/NonmanifoldLaplace.pdf\">Source<\/a>. <\/figcaption><\/figure>\n\n\n\n<p>This is intellectually intriguing to consider, because most standard geometry processing methods and techniques do not consider this class of shapes. As such, most algorithms and ideas need to be redesigned for non-manifold surfaces.&nbsp;<\/p>\n\n\n\n<p>Our Blender work consisted of a lot of trial-and-error. None of us had used Blender before, so the learning curve was steep. Yet, despite the occasional frustration, we persevered. With each hour worked, we increased our understanding and expertise, and in the end we were able to generate surfaces we were quite proud of. Most importantly, these triangle meshes have been valuable input for our algorithm and have helped us explore in more detail the differences between manifold and non-manifold surfaces.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/video1_tw_bl_sidebyside.mp4\"><\/video><figcaption>Figure 4. Manifold and Nonmanifold Periodic Surfaces. <\/figcaption><\/figure>\n\n\n\n<h3 class=\"has-text-align-center wp-block-heading\">Houdini<\/h3>\n\n\n\n<p>The new fellows joining this week came from a previous project on minimal surface led by <a href=\"https:\/\/evastgh.github.io\/\">Stephanie Wang<\/a>, which used Houdini as a basis for generating minimal surfaces. Thus, we decided we could use Houdini to carry out some physical deformations, to see how non-manifold surfaces performed compared to similar manifold surfaces.&nbsp;<\/p>\n\n\n\n<p>We used a standard <a href=\"https:\/\/bubblepins.com\/blog\/vellum-simulation-cloth-sim-in-houdini\">Houdini vellum solver<\/a> with some modifications to simulate a section of our surface falling under gravity. Below are some of the simulations we created.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/Houdini-side-by-side.mp4\"><\/video><figcaption>Figure 5. A Nonmanifold and a Manifold Surface Experiencing Gravity. <\/figcaption><\/figure>\n\n\n\n<h3 class=\"has-text-align-center wp-block-heading\">Newton&#8217;s Method<\/h3>\n\n\n\n<p>When we were running <a href=\"http:\/\/www.cs.jhu.edu\/~misha\/Fall09\/Pinkall93.pdf\">Pinkhall and Polthier\u2019s algorithm<\/a> on our surfaces, we noticed that that algorithm would not stop at a local saddle point such as the Schwarz P surface, but would instead run until there was only a thin strip of area left, which is indeed a minimum, but not a very useful one. <\/p>\n\n\n\n<p>Therefore, we switched to Newton\u2019s Method to solve our optimization problem.<\/p>\n\n\n\n<p>We define the triangle surface area as an energy: let the three vertices of a triangle be \\(\\mathbf{q}_1\\), \\(\\mathbf{q}_2\\), \\(\\mathbf{q}_3\\). Then \\(E = \\frac{1}{2} \\|\\mathbf{n}\\| \\), where \\(\\mathbf{n} = (\\mathbf{q}_2-\\mathbf{q}_1) \\times (\\mathbf{q}_3-\\mathbf{q}_1)\\) is the surface area normal. Then we derive its Jacobian and Hessian, and construct the Jacobian and Hessian for all faces in the mesh. <\/p>\n\n\n\n<p>However, this optimization scheme still did not converge to the desired minimum, perhaps because our initialization is far from the solution. Additionally, one of our project mentors implemented the approach in C++ and, similarly, no results ensued. Later, we tried to add line search to Newton\u2019s Method, but also no luck.<\/p>\n\n\n\n<p>Although our algorithm still does not converge to some minimal surfaces which we know to exist, it has generated the following fun bugs. <\/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=\"516\" style=\"aspect-ratio: 712 \/ 516;\" width=\"712\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/bug1.mp4\"><\/video><figcaption>Figure 6.<\/figcaption><\/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=\"516\" style=\"aspect-ratio: 712 \/ 516;\" width=\"712\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/b3.mp4\"><\/video><figcaption>Figure 7.<\/figcaption><\/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=\"516\" style=\"aspect-ratio: 712 \/ 516;\" width=\"712\" controls src=\"http:\/\/summergeometry.org\/sgi2021\/wp-content\/uploads\/2021\/08\/bug2.mp4\"><\/video><figcaption>Figure 8. <\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"has-text-align-center wp-block-heading\">Future Work<\/h3>\n\n\n\n<p>In the previous blog post, we discussed studying the physical properties of nonmanifold TPMS. Over the past week, we used the Vellum Solver in Houdini and explored some of the differences in physical properties between manifold and nonmanifold surfaces. However, this is just the beginning &#8212; we can continue to expand our work in that direction.<\/p>\n\n\n\n<p>Additional goals may include writing a script to generate many possible initial conditions, then converting the initial conditions into minimal surfaces, either by using the Pinkall and Polthier algorithm, or by implementing another minimal-surface-generating algorithm.&nbsp;<\/p>\n\n\n\n<p>More work can be done on enumerating <em>all <\/em>of the possible nonmanifold structures that the Pinkall and Polthier algorithm generates. The researchers can, then, categorize the structures based on their geometric or physical properties. As mentioned last week, this is still <a href=\"https:\/\/en.wikipedia.org\/wiki\/Triply_periodic_minimal_surface#Families\">an open problem<\/a>.&nbsp;<\/p>\n\n\n\n<h3 class=\"has-text-align-center wp-block-heading\">Acknowledgments<\/h3>\n\n\n\n<p>We would like to thank our mentors <a href=\"https:\/\/www.cs.utexas.edu\/users\/evouga\/\">Etienne Vouga<\/a>, <a href=\"https:\/\/nmwsharp.com\/\">Nicholas Sharp<\/a>, and <a href=\"https:\/\/www.cs.utexas.edu\/~josh\/\">Josh Vekhter<\/a> for their patient guidance and the numerous hours they spent helping us debug our Matlab code, even when the answers were not immediately obvious to any of us. A special thanks goes to <a href=\"https:\/\/evastgh.github.io\/\">Stephanie Wang<\/a>, who shared her Houdini expertise with us and, thus, made a lot of our visualizations possible. We would also like to thank our Teaching Assistant <a href=\"https:\/\/www.egr.msu.edu\/~amezqui3\/aboutme.html\">Erik Amezquita<\/a>.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Natasha Diederen, Alice Mehalek, Zhecheng Wang, and Olga Gu\u021ban This week we worked on extending the results described here. We learned an array of new techniques and enhanced existing skills that we had developed the week(s) before. Here is some of the work we have accomplished since the last blog post.&nbsp; Tiling One of [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,25],"tags":[],"class_list":["post-1339","post","type-post","status-publish","format-standard","hentry","category-demo","category-sgi-research-projects"],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts\/1339","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=1339"}],"version-history":[{"count":9,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts\/1339\/revisions"}],"predecessor-version":[{"id":1416,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/posts\/1339\/revisions\/1416"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/media?parent=1339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/categories?post=1339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2021\/wp-json\/wp\/v2\/tags?post=1339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}