{"id":170,"date":"2024-08-20T20:19:46","date_gmt":"2024-08-20T20:19:46","guid":{"rendered":"https:\/\/summergeometry.org\/sgi2024\/?p=170"},"modified":"2024-08-20T20:19:47","modified_gmt":"2024-08-20T20:19:47","slug":"approximating-surfaces-with-meshes-some-experiments","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2024\/approximating-surfaces-with-meshes-some-experiments\/","title":{"rendered":"Approximating Surfaces with Meshes: Some Experiments"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"720\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-19_at_2.40.40_pm_720.png\" alt=\"\" class=\"wp-image-1418\" style=\"width:336px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-19_at_2.40.40_pm_720.png 566w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-19_at_2.40.40_pm_720-236x300.png 236w\" sizes=\"auto, (max-width: 566px) 100vw, 566px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Project Mentor:<\/strong>\u00a0Nicholas Sharp\u00a0<\/p>\n\n\n\n<p><strong>SGI Volunteer:<\/strong>\u00a0Qi Zhang<\/p>\n\n\n\n<p>This blog post is a follow up to &#8220;How to match the \u201cwiggliness\u201d of two shapes&#8221;, where we discussed the metrics we use to measure the similarity between two surfaces. In that post, we briefly talked about approximating a surface by using a regular grid to generate vertices for an approximation mesh. There we observed that as we increased the number of vertices, the surface approximation error decreases. This is somewhat intuitive &#8211; as you increase the &#8220;fineness&#8221; of the approximation mesh, the more closely you would expect it to approximate the actual surface. However, in practical applications we aim to keep the number of vertices as low as possible, in order to reduce both memory space and the amount of runtime computation.<\/p>\n\n\n\n<p>So what can we do to improve the surface approximation without increasing the number of vertices? Are there better ways to select vertices &#8211; such that we can minimize the chamfer distance error? This is what we will be exploring in this post.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Regular grids<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<p>Before we try different ways of selecting vertex positions. Hence we repeat the same experiment with a few different surfaces, using a regular grid to generate mesh vertices. First we start with three basic cases with different gaussian curvatures:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Sphere function (positive gaussian curvature)<\/strong><\/li>\n<\/ol>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-94bc23d7 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"973\" height=\"1024\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-10.03.59-PM-973x1024.png\" alt=\"\" class=\"wp-image-1435\" style=\"width:333px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-10.03.59-PM-973x1024.png 973w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-10.03.59-PM-285x300.png 285w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-10.03.59-PM-768x809.png 768w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-10.03.59-PM.png 984w\" sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><figcaption class=\"wp-element-caption\">Figure 1.  Sphere function approximated with regular grid vertices.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/sphere_function-2.png\" alt=\"\" class=\"wp-image-1430\" style=\"width:466px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/sphere_function-2.png 640w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/sphere_function-2-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Figure 2. Log-log error plot of grid vertices dimensions and chamfer distance error for the sphere function<\/figcaption><\/figure>\n<\/div>\n\n\n\n<p><strong>2. Saddle function (negative gaussian curvature)<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-94bc23d7 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"966\" height=\"850\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.52.24-PM.png\" alt=\"\" class=\"wp-image-1434\" style=\"width:398px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.52.24-PM.png 966w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.52.24-PM-300x264.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.52.24-PM-768x676.png 768w\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" \/><figcaption class=\"wp-element-caption\">Figure 3.  Saddle function approximated with regular grid vertices.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"576\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-19_at_12.03.50_pm.png\" alt=\"\" class=\"wp-image-1417\" style=\"width:466px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-19_at_12.03.50_pm.png 766w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-19_at_12.03.50_pm-300x226.png 300w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><figcaption class=\"wp-element-caption\">Figure 4. Log-log error plot of grid vertices dimensions and chamfer distance error for the saddle function<\/figcaption><\/figure>\n<\/div>\n\n\n\n<p><strong>3. Quadratic function (0 gaussian curvature)<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-94bc23d7 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"636\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.27-PM-edited.png\" alt=\"\" class=\"wp-image-1433\" style=\"width:401px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.27-PM-edited.png 636w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.27-PM-edited-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.27-PM-edited-150x150.png 150w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><figcaption class=\"wp-element-caption\">Figure 5. Quadratic function approximated with regular grid vertices.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/quadratic0.png\" alt=\"\" class=\"wp-image-1429\" style=\"width:489px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/quadratic0.png 640w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/quadratic0-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Figure 6. Log-log error plot of grid vertices dimensions and chamfer distance error for the quadratic function<\/figcaption><\/figure>\n<\/div>\n\n\n\n<p>So far everything works well similarly to the previous blog post &#8211; the error decreases consistently as the grid resolution. <\/p>\n\n\n\n<p>In order to really visualize the limitations of using the regular grid to sample points on the mesh, we decided to also include a more &#8220;extreme&#8221; function that looks harder to approximate &#8211; the <a href=\"https:\/\/www.sfu.ca\/~ssurjano\/crossit.html\" data-type=\"link\" data-id=\"https:\/\/www.sfu.ca\/~ssurjano\/crossit.html\">Cross-in-tray function<\/a>, which has a few asymptotes. <\/p>\n\n\n\n<p><strong>4. Cross-in-tray function<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"362\" height=\"362\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_10.46.24_am_720-edited.png\" alt=\"\" class=\"wp-image-1957\" style=\"width:384px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_10.46.24_am_720-edited.png 362w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_10.46.24_am_720-edited-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_10.46.24_am_720-edited-150x150.png 150w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><figcaption class=\"wp-element-caption\">Figure 7. Cross-in-tray function approximated with regular grid vertices<\/figcaption><\/figure>\n<\/div>\n\n\n<p>For this function, we noticed something unusual. When we increase the grid resolution from 6&#215;6, to 7&#215;7, to 8&#215;8, we notice a sharp increase, then decrease in error, unlike the consistent decrease in error as we saw before.  <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/cross_in_tray-1.png\" alt=\"\" class=\"wp-image-1424\" style=\"width:408px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/cross_in_tray-1.png 640w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/cross_in_tray-1-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Figure 8. Error plot of grid vertices dimensions and chamfer distance error for the quadratic function<\/figcaption><\/figure>\n<\/div>\n\n\n<p>We decided to visualize what might be causing this in the figures 9-11 below, where the green transparent surface represents a close approximation of the actual surface, and the magenta surface shows the surface generated by sampling the regular grids with the different dimensions mentioned .<\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-94bc23d7 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"338\" height=\"338\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.59_pm_720-edited-1.png\" alt=\"\" class=\"wp-image-1975\" style=\"width:328px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.59_pm_720-edited-1.png 338w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.59_pm_720-edited-1-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.59_pm_720-edited-1-150x150.png 150w\" sizes=\"auto, (max-width: 338px) 100vw, 338px\" \/><figcaption class=\"wp-element-caption\">Figure 9. Approximation with 6&#215;6 grid vertices<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"388\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.33_pm_720-1-edited.png\" alt=\"\" class=\"wp-image-1959\" style=\"width:329px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.33_pm_720-1-edited.png 388w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.33_pm_720-1-edited-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.52.33_pm_720-1-edited-150x150.png 150w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><figcaption class=\"wp-element-caption\">Figure 10. Approximation with 7&#215;7 grid vertices<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"447\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.51.55_pm_720-1-edited.png\" alt=\"\" class=\"wp-image-1960\" style=\"width:327px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.51.55_pm_720-1-edited.png 447w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.51.55_pm_720-1-edited-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/screenshot_2024-07-17_at_4.51.55_pm_720-1-edited-150x150.png 150w\" sizes=\"auto, (max-width: 447px) 100vw, 447px\" \/><figcaption class=\"wp-element-caption\">Figure 11. Approximation with 8&#215;8 grid vertices<\/figcaption><\/figure>\n<\/div>\n\n\n\n<p>As seem above, the increase in the approximation error for the 7&#215;7 regular grid is caused by the alignment of the selected vertices with the planes that the asymptotes lie on. <\/p>\n\n\n\n<p>This is an interesting observation, as we can visibly see that the alignment of the vertices to certain features or properties of a surface affects the surface approximation error. There have been works [1][2] that have touched on heuristics about how when the mesh edges are orthogonal to the direction of principal curvature of the original function it often (but not always!) results in a lower approximation error. The next two type of experiments look into this further.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rotated surface function<\/strong><\/h2>\n\n\n\n<p>We decided to test the alignment of the edges to the direction of principal curvature on the quadratic function, as we could easily identify this direction for this function. We rotated the surface by different angles and generated approximations using the same regular grid, then plotted its error.<\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-94bc23d7 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"526\" height=\"526\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.20-PM-edited-1.png\" alt=\"\" class=\"wp-image-1970\" style=\"width:325px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.20-PM-edited-1.png 526w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.20-PM-edited-1-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.49.20-PM-edited-1-150x150.png 150w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><figcaption class=\"wp-element-caption\">Figure 12. Approximation of unrotated quadratic function<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"674\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.46.45-PM-1-edited.png\" alt=\"\" class=\"wp-image-1969\" style=\"width:327px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.46.45-PM-1-edited.png 674w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.46.45-PM-1-edited-300x300.png 300w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-11-at-9.46.45-PM-1-edited-150x150.png 150w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><figcaption class=\"wp-element-caption\">Figure 13. Approximation of quadratic function rotated 45 degrees around the z axis<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-36.png\" alt=\"\" class=\"wp-image-1986\" style=\"width:604px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-36.png 640w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/image-36-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n<\/div>\n\n\n\n<p>Interestingly, the error is the lowest when the quadratic function is rotated 45 degrees and 225 degrees and highest. This is notable because when the function is rotated 0 or 90 degrees, the short edges of the triangles are in fact orthogonal to the direction of principal curvature, so according to the heuristic these cases should have given the lowest error. <\/p>\n\n\n\n<p>After closer observation we realized that the 45 degrees and 225 degrees cases are when the <em>longest<\/em> edge of the triangles are orthogonal with the curvature of the quadratic surface. Perhaps more work can be done to look into this in the future!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Re-meshed grid <\/strong><\/h2>\n\n\n\n<p>We also use the <a href=\"https:\/\/www.graphics.rwth-aachen.de\/media\/papers\/remeshing1.pdf\" data-type=\"link\" data-id=\"https:\/\/www.graphics.rwth-aachen.de\/media\/papers\/remeshing1.pdf\">Botsch-Kebbelt<\/a> re-meshing algorithm to re-mesh the regular grid, to generate more randomness in the alignment of the triangles to the principal curvature of the quadratic function. This algorithm takes in the surface as well as the desired average edge lengths of the the triangles in the mesh, and outputs to us a re-meshed surface. The images from left to right demonstrates what happens as we increase the average edge length that we pass in as a parameter. <\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-94bc23d7 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"719\" height=\"958\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-07-19-at-2.51.38-PM-edited.png\" alt=\"\" class=\"wp-image-1979\" style=\"width:350px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-07-19-at-2.51.38-PM-edited.png 719w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-07-19-at-2.51.38-PM-edited-225x300.png 225w\" sizes=\"auto, (max-width: 719px) 100vw, 719px\" \/><figcaption class=\"wp-element-caption\">Figure 15. Approximation of surface using a re-meshed grid with 0.15 desired edge length<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"923\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-07-19-at-2.40.40-PM-edited.png\" alt=\"\" class=\"wp-image-1980\" style=\"width:350px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-07-19-at-2.40.40-PM-edited.png 692w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Screenshot-2024-07-19-at-2.40.40-PM-edited-225x300.png 225w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><figcaption class=\"wp-element-caption\">Figure 16. Approximation of surface using a re-meshed grid with 0.07 desired edge length<\/figcaption><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Figure_1-3.png\" alt=\"\" class=\"wp-image-1981\" style=\"width:497px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Figure_1-3.png 640w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/Figure_1-3-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Figure 17. Error plot of input desired re-meshed edge length and chamfer distance error<\/figcaption><\/figure>\n<\/div>\n\n\n<p>To make a more equal comparison, we converted the grid resolution to find the average edge length of the triangles in the regular grids and plotted its error together on a log-log graph. As we can see below, the regular grid does better than the Bosch-Kebbelt re-meshed grid. This is congruent with what we expected &#8211; that aligning the edges of the triangles would give us a lower error than just random orientations!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/compare.png\" alt=\"\" class=\"wp-image-1428\" style=\"width:442px;height:auto\" srcset=\"https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/compare.png 640w, https:\/\/summergeometry.org\/sgi2024\/wp-content\/uploads\/2024\/08\/compare-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">Figure 18. Comparison of the chamfer distance error for the regular grid and the botsch-kebbelt re-meshed grid<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>References:<\/strong><\/h2>\n\n\n\n<p>[1] Bommes, David, et al. \u201cMixed-integer quadrangulation.\u201d\u00a0ACM Transactions on Graphics, vol. 28, no. 3, July 2009, pp. 1\u201310, doi:10.1145\/1531326.1531383.<\/p>\n\n\n\n<p>[2] Jakob, Wenzel, et al. \u201cInstant Field-aligned Meshes.\u201d\u00a0<em>ACM Transactions on Graphics<\/em>, vol. 34, no. 6, Nov. 2015, pp. 1\u201315, doi:10.1145\/2816795.2818078.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Project Mentor:\u00a0Nicholas Sharp\u00a0 SGI Volunteer:\u00a0Qi Zhang This blog post is a follow up to &#8220;How to match the \u201cwiggliness\u201d of two shapes&#8221;, where we discussed the metrics we use to measure the similarity between two surfaces. In that post, we briefly talked about approximating a surface by using a regular grid to generate vertices for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"ppma_author":[32],"class_list":["post-170","post","type-post","status-publish","format-standard","hentry","category-research"],"authors":[{"term_id":32,"user_id":0,"is_guest":1,"slug":"cap-yixinlok","display_name":"yixinlok","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"","last_name":"","user_url":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/comments?post=170"}],"version-history":[{"count":7,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/170\/revisions"}],"predecessor-version":[{"id":1989,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/posts\/170\/revisions\/1989"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/media?parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/categories?post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/tags?post=170"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2024\/wp-json\/wp\/v2\/ppma_author?post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}