Efficient Embeddings

in Exact Arithmetic

Ugo Finnendahl, Dimitris Bogiokas, Pablo Robles Cervantes, Marc Alexa
SIGGRAPH 08.08.2023

Embedding

"negative" area

Tutte embedding [Tutte 1963]

boundary
flipped

Progressive Embedding [Shen et al. 2019]

edge collapse
edge insertion

Schnyder Embeddings [Schnyder 1990]

linear running time
$$b_i = \left(\htmlData{fragment-index=94}{\frac{1}{|T|}}\sum_{t\in \red{R_i^{\rr}}} 1, \htmlData{fragment-index=94}{\frac{1}{|T|}}\sum_{t\in \green{R_i^{\gg}}} 1, \htmlData{fragment-index=94}{\frac{1}{|T|}}\sum_{t\in \blue{R_i^{\bb}}} 1\right)$$
complex boundary
holes

Weighted Schnyder Embeddings [Dhandapani 2010]

$$\mathbf{w} = \begin{bmatrix} \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00} \end{bmatrix} $$
$$\phantom{\mathbf{w} =} \begin{matrix} w_0\\ w_1\\ w_2\\ w_3\\ w_4\\ w_5\\ w_6\\ w_7\\ w_8\\ w_9\\ w_{10}\\ w_{11}\\ w_{12}\\ w_{13}\\ w_{14} \end{matrix} $$
linear time
$$b_i = \left(\frac{1}{|T|}\sum_{t\in \red{R_i^{\rr}}} 1, \frac{1}{|T|}\sum_{t\in \green{R_i^{\gg}}} 1, \frac{1}{|T|}\sum_{t\in \blue{R_i^{\bb}}} 1\right)$$
$$b_i = \left(\frac{1}{|\mathbf{w}|}\sum_{t\in \red{R_i^{\rr}}} w_t, \frac{1}{|\mathbf{w}|}\sum_{t\in \green{R_i^{\gg}}} w_t, \frac{1}{|\mathbf{w}|}\sum_{t\in \blue{R_i^{\bb}}} w_t \right)$$

Transformation

Weights Space

$$\mathbf{w} = \begin{bmatrix} \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00}\\ \phantom{-0.00} \end{bmatrix} $$

Barycentric Coordinates Space

$$L \htmlData{fragment-index=50}{\in \{0,1\}^{N\times N}}$$
$$L^{-1} \htmlData{fragment-index=65}{\in \{-1,0,1\}^{N\times N}}$$
$$b_i = \left(\frac{1}{|\mathbf{w}|}\sum_{t\in \red{R_i^{\rr}}} w_t, \frac{1}{|\mathbf{w}|}\sum_{t\in \green{R_i^{\gg}}} w_t, \frac{1}{|\mathbf{w}|}\sum_{t\in \blue{R_i^{\bb}}} w_t \right)$$

Naïve Approach

flipped triangles
$$L$$
$$\begin{pmatrix} \red{-1.04}\\ 0.64\\ \red{-1.73}\\ \vdots \\ 0.98\\ \red{-0.32}\\ 0.80 \end{pmatrix} $$
$$\begin{pmatrix} \green{1}\\ 0.64\\ \green{1}\\ \vdots \\ 0.98\\ \green{1}\\ 0.80 \end{pmatrix} $$
$$L^{-1}$$

Weight Space

$$\delta_{\text{unflip}} = \frac{1}{2}\left(\sqrt{\operatorname{tr}^2A-4\det A}-\operatorname{tr} A\right)$$
$$\delta_{\text{fully extend}} = \max\left\{\begin{aligned} \max\{b^{\rr}_{t^{\gg}}, b^{\rr}_{t^{\bb}}\}-b^{\rr}_{t^{\rr}},\\ \max\{b^{\gg}_{t^{\rr}}, b^{\gg}_{t^{\bb}}\}-b^{\gg}_{t^{\gg}},\\ \max\{b^{\bb}_{t^{\rr}}, b^{\bb}_{t^{\gg}}\}-b^{\bb}_{t^{\bb}}\phantom{,} \end{aligned}\right\}$$

Better Strategy

Ours
flipped triangles
$$L$$
$$\begin{pmatrix} -1.04\\ \red{0.64}\\ -1.73\\ \vdots \\ 0.98\\ \red{-0.32}\\ 0.80 \end{pmatrix} $$
$$\begin{pmatrix} -1.04\\ \red{0.64+\delta_i}\\ -1.73\\ \vdots \\ 0.98\\ \red{-0.32+\delta_k}\\ 0.80 \end{pmatrix} $$
$$L^{-1}$$
repeat until all triangles are unfliped

Results

lower is better
Ours

Input

Output

Exact Arithmetic

$$L \in \{0,1\}^{N\times N}$$
$$L \in \Z^{N\times N}$$
$$L^{-1} \in \{-1,0,1\}^{N\times N}$$
$$L^{-1} \in \Z^{N\times N}$$

Weights Space

$$\R$$

$$\Z$$

Barycentric Coordinates Space

$$\R$$

$$\Z$$

Conclusion

Input

Output

✔ Pros

  • Efficent Embeddings
  • in Exact Arithmetic

✘ Cons

  • Boundary is triangle
    or not controllable
  • Works only with triangle meshes

Thank You!

Code available (soonâ„¢)

Code available (soonâ„¢)