{"id":447,"date":"2025-08-02T23:47:59","date_gmt":"2025-08-02T23:47:59","guid":{"rendered":"https:\/\/summergeometry.org\/sgi2025\/?p=447"},"modified":"2025-08-06T18:19:15","modified_gmt":"2025-08-06T18:19:15","slug":"quasi-harmonic-geodesic-distance","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2025\/quasi-harmonic-geodesic-distance\/","title":{"rendered":"Quasi-harmonic Geodesic Distance"},"content":{"rendered":"\n<p>I kicked off this project with my advisor, <a href=\"https:\/\/wangyu9.github.io\">Yu Wang<\/a>, over Zoom the weekend before our official start, checked in mid-week to ask questions and provide a progress report, and wrapped up the week with a final Zoom review\u2014each meeting improving my understanding of the fundamental problem and how to improve my approach in Python. I\u2019m excited to share these quasi-harmonic ideas of how a blend of PDE insight and mesh-based propagation can yield both speed and exactness in geodesic computation.<\/p>\n\n\n\n<p>Finding the shortest path on a curved surface\u2014called the geodesic distance\u2014is deceptively challenging. Exact methods track how a wavefront would travel across every triangle of the mesh, which is accurate but can be painfully slow on complex shapes. The Heat Method offers a clever shortcut: imagine dropping a bit of heat at your source point, let it diffuse for a moment, then \u201cread\u201d the resulting temperature field to infer distances. By solving two linear systems\u2014one for the heat spread and one to recover a distance\u2010like potential\u2014you get a fast, global approximation. It runs in near-linear time and parallelizes beautifully, but it can smooth over sharp creases and slightly misestimate in highly curved regions.<\/p>\n\n\n\n<p>To sharpen accuracy where it matters, I adopted a hybrid strategy. First, detect \u201cbarrier\u201d edges\u2014those sharp creases where two faces meet at a steep dihedral angle\u2014and temporarily slice the mesh along them. Then apply the Heat Method independently on each nearly\u2010flat patch, pinning the values along the cut edges to their true geodesic distances. Finally, stitch everything back together by running a precise propagation step only along those barrier edges. The result is a distance field that retains the Heat Method\u2019s speed and scalability on smooth regions, yet achieves exactness along critical creases. It\u2019s remarkable how something as seemingly simple as measuring distance on a surface can lead into rich territory\u2014mixing partial-differential equations, sparse linear algebra, and discrete geometry in pursuit of both efficiency and precision.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I kicked off this project with my advisor, Yu Wang, over Zoom the weekend before our official start, checked in mid-week to ask questions and provide a progress report, and wrapped up the week with a final Zoom review\u2014each meeting improving my understanding of the fundamental problem and how to improve my approach in Python. [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[],"ppma_author":[32],"class_list":["post-447","post","type-post","status-publish","format-standard","hentry","category-research"],"authors":[{"term_id":32,"user_id":0,"is_guest":1,"slug":"cap-mhellinger","display_name":"mhellinger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts\/447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/comments?post=447"}],"version-history":[{"count":2,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts\/447\/revisions"}],"predecessor-version":[{"id":449,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts\/447\/revisions\/449"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/media?parent=447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/categories?post=447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/tags?post=447"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/ppma_author?post=447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}