shortest paths & geodesics

前端 未结 4 1599
臣服心动
臣服心动 2020-12-29 06:53

given a mesh made entirely of quads, where every vertex has valence n (with n >= 3), and does not lie on the same plane, I need to find the distance of every vertex in the m

相关标签:
4条回答
  • 2020-12-29 07:06

    This may be better suited for the theoretical computer science stack exchange. See this post on shortest edge paths.

    https://cstheory.stackexchange.com/questions/6822/shortest-paths-disallowing-each-edge

    and perhaps

    https://cstheory.stackexchange.com/questions/4034/complexity-of-computing-shortest-paths-in-the-plane-with-polygonal-obstacles

    0 讨论(0)
  • 2020-12-29 07:13

    Another option: Euclidean Shortest Path Algorithm This is a recent (2012) generic implementation of shortest path.

    0 讨论(0)
  • 2020-12-29 07:18

    "a) it still suffers from the obtuse angle problem"

    Yes, the original FMM suffers from the obtuse angle problem, but researchers have solved this problem. This link is Gabriel Peyre's implementation of fast marching method in matlab. http://www.mathworks.com/matlabcentral/fileexchange/6110-toolbox-fast-marching

    "b) when used in a multiple seed points scenario, a single FMM has to be implemented for every single seed in order to find the minimum distance for each mesh vertex from each seed (that is, in a 10 seed points scenario, FMM would have to be run 10 times per each mesh vertex)"

    If you mean multi-source shortest path problem, fast marching method don't need to run multiple times. For example, for seed s1 and s2, and destination v, and shortest distance between s1 and v is d(s1,v), distance between s2 and v is d(s2,v). To find the shortest distance between v and s1,s2, min(d(s1,v),d(s2,v)), run one time fast marching method is enough. But if you want to know both d(s1,v) and d(s2,v), you need to run FMM multiple times.

    "On the other side, an exact algorithm -MMP- that leads to 0 error has been presented by Mitchell & al. (MI) in 87, and AFAIK has never been really implmeneted (probably due to the computing power required). On the same exact approach, Surazhsky & al. (SU) provided an alternative exact algorithm based on MMP that should outperform the latter in terms of speed, still leading to a correct result. Unfortunately the computing power required for the calculation, even if much less than the original MMP, is still high enough so that realtime interactive implementation is not feasible at this time. (SU) also proposed an approximation of their exact algorithm, what they called flat-exact. It should take the same computational time of FMM, while bringing only 1/5th of the error, but:"

    comments: MMP has an implementation in 2005, the implementation is published in [1]. The link to the code is in https://code.google.com/p/geodesic/

    "c) it is unclear to me if it can be used in a multiple seeds scenario."

    It can be used in multi seeds scenario and the above code implemented it.

    "Other exact shortest path algorithms have been proposed by Chen & Han (CH) and Kapoor (KP), but while the first is absolutely slow, the second is just too complicated to be implemented in practice."

    comments: The first one is slow, but in [2] the author improved the CH algorithm and give an practical implementation which is exact and faster than MMP. The code is in sites.google.com/site/xinshiqing/knowledge-share

    [1]Vitaly Surazhsky, Tatiana Surazhsky, Danil Kirsanov, Steven Gortler, Hugues Hoppe. Fast exact and approximate geodesics on meshes. ACM Trans. Graphics (SIGGRAPH), 24(3), 2005.

    [2]Improving Chen & Han’s Algorithm on the Discrete Geodesic Problem. Shiqing Xin and Guo-Jin Wang. ACM Transactions on Graphics (TOG): 28(4), pp. 1–8, August 2009.

    0 讨论(0)
  • 2020-12-29 07:21

    There is a new paper that discusses exactly how to solve your problem: Geodesics in Heat. (Just spotted it and it reminded me of your question.) The idea is that the heat equation can be thought of as describing the diffusion of particles from some central point. Although it models random diffusion, if you run the heat equation for a short enough time then any particles that get from A to B must have followed the shortest path so mathematically you can get an estimate of distance.

    The catch is that the proportion of particles that follow a path close to the shortest path is tiny so you have to solve a differential equation that starts large at some region and rapidly ends up small elsewhere. That's not likely to be well behaved numerically. The trick is that for larger t, even though it doesn't measure distance correctly, it does give the gradient of the distance function and this can be used with other methods to get the distance.

    TL;DR The linked paper solves distance from every point in a mesh to any subdomain, including finite sets of seed points.

    Oh...and I haven't tested it myself.

    0 讨论(0)
提交回复
热议问题