Reputation: 166
I was trying to code a bounded distortion mapping for triangular meshes. Like, suppose I have a triangular mesh for a sphere.
[V,F] = subdivided_sphere(1);
tsurf(F,V); axis equal;
where V
and F
are,
V =
0 0.52573 0.85065
0 -0.52573 0.85065
0 0.52573 -0.85065
0 -0.52573 -0.85065
0.52573 0.85065 0
-0.52573 0.85065 0
0.52573 -0.85065 0
-0.52573 -0.85065 0
0.85065 0 0.52573
-0.85065 0 0.52573
0.85065 0 -0.52573
-0.85065 0 -0.52573
0 0 1
0.30902 0.80902 0.5
-0.30902 0.80902 0.5
0.5 0.30902 0.80902
-0.5 0.30902 0.80902
0.30902 -0.80902 0.5
-0.30902 -0.80902 0.5
0.5 -0.30902 0.80902
-0.5 -0.30902 0.80902
0 0 -1
0.30902 0.80902 -0.5
-0.30902 0.80902 -0.5
0.5 0.30902 -0.80902
-0.5 0.30902 -0.80902
0.30902 -0.80902 -0.5
-0.30902 -0.80902 -0.5
0.5 -0.30902 -0.80902
-0.5 -0.30902 -0.80902
0 1 0
0.80902 0.5 0.30902
0.80902 0.5 -0.30902
-0.80902 0.5 0.30902
-0.80902 0.5 -0.30902
0 -1 0
0.80902 -0.5 0.30902
0.80902 -0.5 -0.30902
-0.80902 -0.5 0.30902
-0.80902 -0.5 -0.30902
1 0 0
-1 0 0
F =
1 13 16
1 16 14
1 14 15
1 15 17
1 17 13
2 18 20
9 37 41
9 41 32
5 33 23
5 23 31
6 24 35
6 35 34
10 42 39
10 39 21
2 19 18
4 27 28
4 28 30
4 30 22
4 22 29
4 29 27
2 20 13
9 32 16
5 31 14
6 34 15
10 21 17
7 37 18
7 38 37
11 33 41
11 25 33
3 24 23
3 26 24
12 42 35
12 40 42
8 19 39
8 36 19
7 36 27
8 40 28
12 26 30
3 25 22
11 38 29
9 16 20
5 14 32
6 15 31
10 17 34
2 13 21
9 20 37
11 41 38
5 32 33
3 23 25
6 31 24
12 35 26
10 34 42
8 39 40
2 21 19
7 18 36
8 28 36
12 30 40
3 22 26
11 29 25
7 27 38
20 16 13
32 14 16
31 15 14
34 17 15
21 13 17
37 20 18
38 41 37
33 32 41
25 23 33
24 31 23
26 35 24
42 34 35
40 39 42
19 21 39
36 18 19
36 28 27
40 30 28
26 22 30
25 29 22
38 27 29
I was trying to learn/understand how the mapping was constructed to transform a 3d shape (triangular meshes) to another 3d shape with distortion or without distortion for one of my personal project. I googled and get bounded mapping are the best one because they are supposed to be bijective, and I could reverse the map. And if you think I should read any book before understanding these things, then please suggest one. My main goal is to learn how to define this kind of mapping.
Providing any python/matlab code or a paper where these things were described in details will be a great help for me. Sorry, if this question was too basic as I was learning geometry processing by my own.
Upvotes: 1
Views: 1135
Reputation: 3274
From Surface to Plane
Here are two papers about bounded distortion mapping of triangular meshes:
Bounded Distortion Mapping Spaces for Triangular Meshes, Lipman, 2012. (Matlab Code)
Bounded Distortion Parametrization in the Space of Metrics, Chien, Levi, and Weber. 2016.
Both of these papers deal with mapping a triangular mesh to a 2D space assuming that the triangular mesh has been cut to have the topology of a disk.
This paper creates a bounded distortion mapping to a 2D space while doing the cut at the same time:
Bounded-distortion Piecewise Mesh Parameterization
From Surface to Surface
Lifted Bijections for Low Distortion Surface Mappings, Aigerman et al., 2014.
Seemless surface mapping, Aigerman et al., 2015.
ENIGMA: Evolutionary Non-Isometric Geometry MAtching, Edelstein et al., 2020.
These are just some examples of papers and techniques that deals with bijective maps of surfaces, but you can look at the previous works and references for more information. I mentioned these ones because they are the main teams that started dealing with bijective maps.
Another paper that I like but that doesn't guarantee the bijectivity property:
Fitting polynomial surfaces to triangular meshes with Voronoi squared distance minimization
It uses the "shrink wrap" technique but in a much more robust way.
And a last review paper (outdated but still useful to get the basics) for mapping surfaces to a sphere (you can reverse the map to get sphere-to-surface):
Fundamentals of Spherical Parameterization for 3D Meshes
Other Resources
Discrete Differential Geometry: An Applied Introduction
Polygon Mesh Processing (Book)
Upvotes: 1