An Iterative Parallel Algorithm for Computing Geodesic Distances on

0 downloads 0 Views 2MB Size Report
Oct 18, 2018 - Because it is a basic step in many geometrical algo- rithms, the ... Next, we present the speedup of our parallel method for different meshes and ..... with OpenMP and CUDA respectively, in order to execute the ex- periments in ...
Volume xx (200y), Number z, pp. 1–16

An Iterative Parallel Algorithm for Computing Geodesic Distances on Triangular Meshes

arXiv:1810.08218v1 [cs.CG] 18 Oct 2018

Luciano A. Romero Calla1 , Lizeth J. Fuentes Perez1 , Anselmo A. Montenegro2 , Marcos Lage2 1 Universidad 1 Universidade

La Salle de Arequipa, Peru Federal Fluminense, Instituto de Computação, Brazil

Abstract The computation of geodesic distances is an important research topic in Geometry Processing and 3D Shape Analysis as it is a basic component of many methods used in these areas. For this reason, different approaches have been proposed to compute geodesic distances including exact and approximate methods. Approximate methods are usually used when efficiency is mandatory and particularly when dealing with large meshes. One of the most well-known methods used for computing approximate geodesic distances is the Fast Marching algorithm. Recently, new methods have been proposed: the spectral and diffusion flow-based methods. These approaches are very efficient for distance query but usually depend on computationally intensive preprocessing steps. In this work, we present an iterative parallel algorithm based on front propagation to compute approximate geodesic distances on meshes that is practical and simple to implement. The convergence of our iterative algorithm depends on the number of discrete level sets around the source points from which distance information propagates. To appropriately implement our method in GPUs taking into account memory coalescence problems, we devised a new graph representation based on a breadth-first search traversal that works harmoniously with our parallel front propagation approach. In the experiments, we show how our method scales with the size of the problem by using the proposed graph representation. We compare its mean error and processing times with such measures computed using other methods. We also demonstrate its use for solving two classical geometry processing problems: the regular sampling problem and the Voronoi tessellation on meshes. CCS Concepts • Theory of computation → Parallel algorithms; Computational geometry; • Computing methodologies → Mesh models; Mesh geometry models; Shape analysis;

1. Introduction Computing geodesic distances on meshes is of paramount importance to many Geometry Processing and 3D Shape Analysis problems, like parameterization [KKD∗ 11], shape retrieval [RPC10], isometry-invariant shape classification [BBK06], mesh watermarking [BlD06], object recognition [HK03], skinning [SRC01], just to mention a few. Because it is a basic step in many geometrical algorithms, the efficiency of its computation is a very important issue. Meshes are usually described as graphs. Consequently, one natural approach to solve the problem of geodesic computation on meshes is to generalize the ideas of distances on graphs to compute distance maps on surface representations. This path was pursued by [MMP87] which proposed a continuous Dijkstra method that is able to yield exact results. Later, Surazhsky [SSK∗ 05] refined such method and proposed a more efficient approximate version. Other researchers approached the problem via physical phenomena analogy. Two of the most important methods are based on models for wave propagation and heat diffusion. The Fast Marching apsubmitted to COMPUTER GRAPHICS Forum (10/2018).

proach belongs to the first category of methods and aims to solve the so-called Eikonal Equation [Set99], [KS98]. The Geodesics on Heat [CWW13] belongs to the second class and explores the relationship between the heat kernel computation and distances on surfaces. Here, we propose a parallel algorithm for the computation of distance maps on meshes that produces results with competitive accuracy and is simple to implement. As the Fast Marching method, it is also inspired by the grassfire propagation but our approach does not require the maintenance of any priority queue which is the key to our parallelization strategy. Instead, we propagate distances simultaneously around the frontier of propagation. Our experiments √ show that, under certain conditions, no more than c n iterations, where c is a small constant and n is the number of vertices of the mesh, are necessary for the convergence of the method. We provide a theoretical computational complexity analysis congruent with the experimental results. We also discuss and show that our method is especially appropriate for solving the multi-source distance map problem.

2

1.1. Contribution We introduce an iterative parallel algorithm called Parallel Toplesets Propagation (PTP) to compute distance maps from a set of multiple sources on triangular meshes. Our method was inspired by the Fast Marching algorithm and is based on the propagation of distance information from the inner to the outer groups of vertices that are equidistant to the source vertices. These groups are denoted here topological level sets (toplesets, for short). The vertices in each topleset have their distances updated in parallel, independently, enabling us to explore the powerful parallel architectures present in the GPUs. To appropriately deal with coalescence problems when accessing the vertices in the GPU memory we devised a breadth-first search based graph representation similar to the one in [ZHF∗ 17]. Our method is particularly appropriate for the solution of the problem of distance computation from multiple sources when the sources are predominantly distributed in a uniform way. This makes it remarkably adequate when used as part of the implementation of the Farthest Point Sampling algorithm [ELPZ94] used to solve the problem of mesh resampling. The proposed method is applied directly to the meshes and produces good accuracy results for large and irregular meshes. Additionally, the speedup values are competitive against methods where the preprocessing step dominates the overall complexity even without taking into account the preprocessing time.

1.2. Outline This paper is organized as follows. In Section 2, we describe some of the most important works related to distance computation on graphs and minimal geodesic computation on meshes. Next, in Section 3, we describe and define some concepts and results that were used to develop our algorithm. The proposed method is presented in Section 4. In Section 5, we present the results produced by our algorithm. We first show two applications of our method: a parallel solution to the Farthest Point Sampling Problem and a parallel solution to the problem of computing the Voronoi Diagram on meshes. Next, we present the speedup of our parallel method for different meshes and measure the distance error for each experiment. We also compare our results with the exact method of [MMP87], the Fast Marching Algorithm of [KS98] and the Geodesics on Heat method [CWW13]. Finally in Section 6 we present the conclusions.

2. Related Work The exact computation of geodesic distances on surfaces was proposed by Mitchell et al. [MMP87]. The MMP algorithm proposed by them is based on a continuous Dijkstra algorithm and its computational complexity is O(n2 log n). Due to its high computational cost, approximate methods were developed. These methods present a better performance and maintain a comparable level of accuracy. A fast implementation of the MMP algorithm was presented in [SSK∗ 05]; this algorithm requires less memory and has a computational complexity of O(n log n).

/

Over the last decade, several approximate methods were proposed to compute distances by solving the Eikonal equation: || 5 φ|| = 1

(1)

where φ is a distance function. We can divide these approaches into two families, the Fast Marching, and the Fast Sweeping. The Fast Marching method (FM) was introduced by Sethian to solve distance computation on regular grids [Set99] and later was extended to triangular meshes by Kimmel and Sethian [KS98]. The algorithm which preserves the spirit of the Dijkstra algorithm as it uses a priority queue. It is a single-source to all-vertices algorithm, whose main advantage is the fast calculation of distances of vertices that are close to the source vertices. However, due to the sequential requirement of the priority queue, it is not possible to parallelize this algorithm without critical modifications. The Fast Sweeping approach [QZZ07] has O(n) linear computational complexity. However, the algorithm requires a lot of sweeps to converge, particularly when the grids are unstructured. A parallel version of the Fast Marching Algorithm on parametric surfaces was proposed by Weber [WDB∗ 08]. In this method, the surface must be divided into several regular grids. Then, the distance map is computed for each grid, using a a parallelization strategy based on the Raster Scan algorithm [Dan80]. Finally, the reconstruction is done by joining the distance maps associated with each grid via the Dijkstra algorithm. Up to now, this method is the fastest and highly parallelizable for computing geodesic distances on triangular meshes. However, the error of the computed distance map depends on the distortion of the parameterization. Different approaches that do not resolve Eikonal equation are: The Saddle Vertex Graph (SVG) [YWH13], which encodes the geodesic information in a sparse undirected graph. This method is outperformed by a divide and conquer technique proposed by Wang [WFW∗ 17]. Recently was introduced a new family of methods that require the solution of Poison-like systems. The Heat method was introduced by Crane [CWW13] which requires the solution of the Poisson equation. This method can be used with different kinds of representations because it is possible to compute the Laplacian operator for many different models including triangular meshes, point clouds and polygonal meshes. However, the accuracy of the distance map computation is sensitive to the choice of a parameter. An optimization of this method was proposed by Livesu [Liv18], which is independent of the specific discretization choice and the dimensionality of the dataset. Finally, Litman [LB16] proposed a method that also works on the spectral domain, called the Spectrometer, which outperforms the Heat method. 3. Background In the next subsections, we present some of the basic concepts and results on which our method is based on. 3.1. Basic concepts The notion of distance on a manifold M can be defined, in terms of length of paths on M. A path on a manifold M is a parameterized submitted to COMPUTER GRAPHICS Forum (10/2018).

3

/

curve given by a map γ(t) : t → M, where t ∈ I = [a, b]. According to [dC76], γ is a geodesic at t ∈ I if the field of its tangent vectors γ0 (t) are parallel along γ at t. In other words, if the covariant

in essence to the Fast Marching method and it uses a modification of its update function. Hence, for the sake of comprehensiveness, we present it in the next subsections.

Dγ0 (t)

derivative dt = 0. A parameterized curve γ is a geodesic if it is a geodesic at all t ∈ I and a minimizing geodesic or shortest path R p when it is given by arg in fγ L(γ) = ab γ(t)0T Gγ(t)0 dt. We define a length metric as dL (x, y) = in f L(γ), γ : [a, b] → M, γ(a) = x, γ(b) = y. Some concepts related to straightest geodesic and curvature on polyhedral surfaces are explained in [PS98]. 3.2. Distance maps The Multiple Sources Distance Map problem (MSDMP) is defined as follows. Given a metric space (M, dL ) and a set of source points S ⊂ M define a map dS (x) = min dL (s, x) that associates to each x ∈ M the s∈S

shortest distance to S. The single source distance map problem is a particular case of the multiple source problem and will not be explicitly defined here. One way to solve the problem of computing distance maps is to simulate the propagation of a signal (the distance information) from the source points towards all other points in the space. For the sake of argument, consider that the signal propagates with constant speed |v| = 1 where v is a velocity vector. In nature, signals like light and sound travel according to the Fermat Principle, i.e., by choosing the quickest path. Hence, the signal that propagates from a point source s will choose the direction of propagation that causes the greatest increase in distance. This direction is the gradient of the distance function ||∇dS ||. One can show that the gradient of the distance function is parallel to the tangent of the minimal geodesic γ(t)0 . Thus, as ||γ(t)0 || = 1, it is also possible to demonstrate (see [BBK08]) that for a manifold M,

||∇M dV || = 1

(2)

where ∇M dV is the intrinsic gradient of distance function on M. Equation 2 is the Eikonal Equation seen before defined on manifolds. 3.3. Discrete Distance Maps Many graphical objects are described by 2-d manifolds, embedded in a three-dimensional space, that is, embedded surfaces. Surfaces are usually represented by piecewise linear representations known as triangle meshes T = (V, E, F), where V is the set of vertices, E the set of edges and F the set of faces. We now state the problem of computing distance maps on a triangulated mesh T . Let T be a triangulated mesh. Given a subset S ⊂ V , called source set, compute a map dS (v) : V → < that associates to each v ∈ V the minimum distance to S. For the sake of simplicity, we denote dS as d. In the literature, one can find many ways to solve the MSDMP problem as it was summarized in Section 2. Our method is closer submitted to COMPUTER GRAPHICS Forum (10/2018).

4. Proposed Method The method proposed here works by simulating the propagation of the distance information via a set of sequential iterations. One of the main features of the method is to take for granted the natural ordering induced by the topology of the graph associated with the mesh. Vertices with the same distance value in the unweighted graph induced by the mesh are grouped in sets defined here as topological level sets. The topological level sets and their distances to the source are used to guide the propagation and also mark off its scope. Our algorithm is an iterative algorithm that uses the preliminary ordering defined by the topological distances as an initial estimate of the real continuous distance. At each iteration, the distances of a subset of all topological sets, defining a band (the update band), are updated in parallel using a relaxation scheme similar to the update function of the Fast Marching Method. This relaxation process is applied for a fixed number set of iterations until all distances converge. In this section, we define more precisely the concept of topological level sets and describe the notion of topological level sets propagation which is the kernel of our algorithm. Next, we describe the proposed algorithm and its parallel version. Finally, we present its complexity analysis and explain how to leverage the properties of our method to solve the multi-source version of the problem. 4.1. Topological level sets propagation The topological level sets propagation relies on the concept of topological level sets. Definition 1 (r-topological level set) Let G be a unweighted graph induced by the combinatorial topological structure of a triangle mesh T = (V, E, F). A topological level set of order r (defined here as r-topleset, for short) in G, is the set of all vertices v ∈ G, such that the length of the shortest path p, from v to the source s in G is equal to a constant r > 0, r ∈ N. Definition 2 (Vertices at r-topological level set) Let T = (V, E, F) be a triangular mesh and S ⊂ V the set of source vertices; Vr ⊂ V is the set of vertices at topleset r and is defined by the recurrence relation ( ) Vr =

v ∈ N (Vr−1 ) : v 6∈

r−1 [

Vr0

r0 =0

where V0 = S. We can define the following properties of a topleset: 1.

ρ [

Vr = V

r=0

2. ∀r, r0 ∈ [0, ρ], r 6= r0 : Vr ∩Vr0 = ∅ ρ

3.

∑ |Vr | = |V |

r=0

where ρ is the number of toplesets from S ∈ V in a triangular mesh and N (Vr ) is the set of all the vertices that are neighbors of the vertices v ∈ Vr .

4

/

From now on, for the sake of simplicity of notation use, we identify a r-topleset with the set of vertices Vr that belong to it.

Algorithm 4.1 Proposed method: Parallel Toplesets Propagation (PTP).

A topological level set propagation is defined as the propagation of the distance information through a sequence of toplesets which defines a partial ordering on the vertices of unweighted graph G induced by the mesh’s combinatorial structure.

Require: Triangular mesh (V, F), source vertices S ⊂ V , Vr and r ∈ [0, ρ] Ensure: Distances map d : V → R 1: pre-compute s(B(k)) for each k-topleset 2: dk current distance map at iteration k 3: ∀v ∈ V : d0 (v) ⇐ ∞ 4: ∀s ∈ S : d0 (s) ⇐ 0 5: d1 ⇐ d0 6: for k ⇐ 1 to K do S 7: for all v0 ∈ kr=s(B(k)) Vr (in parallel) do 8: for all (v0 , v1 , v2 ) ∈ F(v0 ) do 9: update(dk , dk−1 , v0 , v1 , v2 ) 10: end for 11: end for 12: end for 13: return d ⇐ dK

A finite sequence of topological level sets (Vi )bi=a , is a set of contiguous topological level sets where a is the starting index of the sequence and b is the ending index. We classify a sequence (Vi )bi=a according to the behavior of the growth of the cardinality of each topleset that belongs to it, as follows: 1. Monotonically increasing topleset sequence: when |Vi | − |Vi−1 | > 0, a ≤ i ≤ b 2. Stationary topleset sequence: when |Vi | − |Vi−1 | = 0, a ≤ i ≤ b 3. Monotonically decreasing topleset sequence: when (|Vi | − |Vi−1 | < 0), a ≤ i ≤ b Now, let T be a triangle mesh with ρ toplesets and n = |V |. T is a monotonically increasing mesh when all of its toplesets define ρ one monotonically increasing sequence (Vi )i=0 . Similarly, T is a monotonically decreasing mesh when all of its toplesets define one ρ monotonically decreasing sequence (Vi )i=0 . When all its toplesets have the same cardinality, except for a small finite number of toplesets c 1, we have the double of edges that can be used to define updating triangles (bolded red lines). Hence, 2|Vr−1 | vertices have their distances fixed except for i0 = i which may fix less than |Vr−1 | vertices as |Vr | ≥ 0 (the number of remaining distances to be fixed cannot be negative). When all vertices v ∈ Vr have their distances fixed, |Vr | = 0. Hence, we state that: |Vr | − |Vr−1 | − 2(i − 1)|Vr−1 | = 0

(19)

r=0

ρ

ρ

∑ |Vr | ≤ ∑ br

r=0

r=0

 i=

|Vr | + |Vr−1 | 2|Vr−1 |

 (20)

submitted to COMPUTER GRAPHICS Forum (10/2018).

15

/

increasing sequence. Then, the maximum number of iterations is √ K = O( n), where n = |V |. Proof To proof Theorem 3 we use the Lemma 5. According to it, the number of iterations K to compute the final ldistance m to the last √ ∆v −3 topleset Vρ is K = cρ − 1, ρ ≤ n, and c = . Thus, we 2 √ √ can affirm that K ≤ c n and K = O( n). Observe that for regular meshes c = 2. Figure 9: Counting iterations to updated the topleset Vr . Appendix B: Analysis of the degrees of the vertices (21)

3000 2603

5191

|Vr | ≤ (∆v − 4)|Vr−1 |

5000

number of vertices

Besides, according to Lemma 4, equation (16) (lower bound to the number of toplesets of a mesh), we know that:

6000

number of vertices

Consequently, we also affirm that:   |Vr | + |Vr−1 | Kr ≤ (r − 1) + 1 2|Vr−1 |

4000 3000 2000 1000

599

0

1

49

3

4

583 51

5

6

7

2500 2000

1569

1500 1000 598

571

500 120

49

1

8

1962

0

9

3

4

5

6

7

degree

where ∆v is the maximum degree of v ∈ Vr . Thus,

(a) fandisk 12000

(∆v − 4)|Vr−1 | + |Vr−1 | |Vr | + |Vr−1 | ≤ 2|Vr−1 | 2|Vr−1 |

10000 8000 6000 4000 1650

1602

16051

12000 10000 8000 6000

4316

6

7

4310

4000 2000

5

0

8

8

122

3

4

5

6

degree

|Vr | + |Vr−1 | ∆v − 3 ≤ 2|Vr−1 | 2

(c) kitten

|Vr | + |Vr−1 | (r − 1) + 1 2|Vr−1 |

25000 20000 15000 10000 3955

5000 0

41

450

3

4

5

3888

6

Kr ≤

40370

7

30000

26294

25000 19533

20000 15000 10000

6156

5659

5000

299

23

3

1

1

8

9

10

11

22

1477

116

0

3

4

5

6

7

9

330

53

11

3

10

11

12

13



∆v − 3 (r − 1) + 1 2

(e) bunny

(22) 100000

(f) tyra 300000

90928

80000 70000 60000 50000



2|Vr−1 | (r − 1) + 1 2|Vr−1 |

35088

30000 20000 0

271438

3

4

250000 210680

200000 149538

150000 92052

100000

69694

50000

24135

5326

4660 41

5

6

7

138

10

1

2

9

10

11

12

8

6472 1421 245

520

0

3

4

5

6

7

degree

8

9

50

11

6

1

2

1

10 11 12 13 14 15 16 17 20

degree

(g) armadillo

(h) ramesses

3.5x106

3214415

3x106

number of vertices

When the mesh has toplesets whose cardinality is stationary, that is |Vr | = |Vr−1 | for all r we have:   |Vr | + |Vr−1 | (r − 1) + 1 Kr ≤ 2|Vr−1 |

36780

40000

10000

Kr ≤ 2r − 1

number of vertices

Kr ≤ 2(r − 1) + 1

number of vertices

When the mesh is regular ∆v = 6 and we have:

Kr ≤

8

degree

90000



9

35000

degree



2

8

40000

number of vertices

Kr ≤



146

(d) elephant 45000

26174

number of vertices



7

degree

30000

finally:

2

11

14000

24

0

26

10

(b) bunny_irregular 16000

2000

9

18000

11196

number of vertices

number of vertices

|Vr | + |Vr−1 | ≤ (∆v − 4)|Vr−1 | + |Vr−1 |

8

degree

2.5x106 2x106 1.5x106 1x106 500000 0

193526 351 18683

3

4

5

142976 31552 6415 1204

6

7

8

9

244

65

15

5

3

1

10 11 12 13 14 15 16

degree

(i) dragon

then Kr ≤ r, and one iteration is sufficient to fix all distances in Vr once Vr−1 has its distances fixed.

Figure 10: Degree meshes.

Theorem 3 [Maximum number of iterations K to compute the distances of a monotonically increasing mesh] Let T = (V, E, F) be a triangular mesh and s ∈ V be a source vertex such that the set of its toplesets Vr ordered by their distances to s define a monotonically

Figure 10 shows the distribution of mesh degrees considering all the meshes used in the experiments. We can observe that the predominant degrees are 6, 4 and 5.

submitted to COMPUTER GRAPHICS Forum (10/2018).

16

/ 250

250

200

200

150 100 50

250

200

200

50

0

10

20

30

40

50

0

10

20

30

250

600

number of vertices

number of vertices

40

50

60

70

(b) bunny_irregular 700

10

20

30

40

50

60

70

80

90

150 100 50 0

30

600

300

500

40

50

60

70

120

140

500 400 300 200 100

0

10

20

30

40

50

60

70

80

90

0

100

0

20

40

60

80

100

toplesets

(c) kitten

400

(d) elephant 1000 900

200

100

20

toplesets

100 0

200

500

0

10

(b) bunny_irregular 600

300

0

toplesets

250

50

(a) fandisk

0

0

100

toplesets

50

50

60

(a) fandisk

toplesets

100

50

700

0

150

40

300

60

200

30

100

150

0

20

40

60

toplesets

80

100

120

140

toplesets

number of vertices

0

20

number of vertices

100

10

number of vertices

150

0

150

toplesets

number of vertices

number of vertices

number of vertices

0

250

number of vertices

Figure 11 shows the distribution of toplesets for each mesh in the experiments. We observe that the curves are non-constant and the vertices are distributed in each topleset.

number of vertices

Appendix C: Analysis of the distribution of toplesets

400 300 200 100

800 700 600 500 400 300 200 100

(c) kitten

(d) elephant

600

0

0

20

40

60

80

100

0

120

0

50

100

toplesets

1000

150

200

250

toplesets

300 200 100

(e) bunny

800 700 600 400 300 200 100

0

20

40

60

80

100

0

120

0

50

100

toplesets

(e) bunny

250

1600

1000 800 600 400 200 0

1400 1200 1000 800 600 400 200

0

50

100

150

200

250

0

300

0

100

200

300

toplesets

1800

400

500

600

700

800

toplesets

1600

number of vertices

number of vertices

200

(f) tyra

1000 800 600 400 200 0

150

toplesets

1200

1800

(g) armadillo

1400

6000

1000 800 600 400 200

0

50

100

150

200

250

0

300

0

100

200

300

toplesets

400

500

600

700

800

toplesets

(g) armadillo

(h) ramesses

5000 4000 3000 2000 1000 0

0

200

400

600

800

1000

1200

1400

toplesets

6000

number of vertices

(h) ramesses

1200

number of vertices

0

(f) tyra

1200

500

number of vertices

400

number of vertices

500

number of vertices

number of vertices

900

5000

(i) dragon

4000 3000

Figure 12: Sorted toplesets meshes distribution.

2000 1000 0

0

200

400

600

800

1000

1200

1400

toplesets

(i) dragon

Figure 11: Toplesets meshes distribution. Figure 12 shows the distribution of toplesets sorted by the number of vertices, and the functions y = x and y = 2x. We can observe that the curve increases over the minimum increase constant c = 1, which is considerate in the proofs. This plots confirm that the num√ ber of toplesets ρ ≤ n. Appendix D: Analysis of error single precision

submitted to COMPUTER GRAPHICS Forum (10/2018).

/ 1.14

2.22

1.13

1.146 1.144

2.2

1.142

1.1 1.09

error (%)

2.18

1.11

error (%)

error (%)

1.12

2.16

2.14

1.136

1.08 2.12

1.07 1.06

60

65

70

75

80

85

2.1

90

1.134

70

75

80

85

# iter

90

95

100

105

1.132

110

# iter

(b) bunny_irregular

0.92

(c) kitten

0.99

1.35 1.3

0.985

0.915

1.25

0.98

0.905

0.9

1.2

0.975

error (%)

error (%)

error (%)

0.91

0.97 0.965

0.895

170

180

190

200

0.95 120

210

0.9 130

140

# iter

(d) elephant

160

170

0.85 200

180

(e) bunny

0.7 0.65 0.6

0.5

260

280

300

320

340

360

# iter

(g) armadillo

380

400

0.288 0.286

0.282

0.45 0.4 750

320

0.284

0.55

0.7

300

0.29

0.75

error (%)

error (%)

0.71

280

0.292

0.8

0.72

260

(f) tyra

0.9

0.73

240

0.294

0.85

0.74

220

# iter

0.95

0.75

error (%)

150

# iter

0.76

0.69 240

1.1 1.05

0.95

0.955

160

1.15

1

0.96

150

95 100 105 110 115 120 125 130 135 140 145 150

# iter

(a) fandisk

0.89 140

1.14 1.138

800

850

900

950 1000 1050 1100 1150

# iter

(h) ramesses

0.28 1300 1400 1500 1600 1700 1800 1900 2000 2100

# iter

(i) dragon

Figure 13: Analysis of the error with single precision k ∈ [ρ : 1.5ρ].

submitted to COMPUTER GRAPHICS Forum (10/2018).

17

Suggest Documents