restricted voronoi diagrams
play

Restricted Voronoi Diagrams for (re)meshing Surfaces and Volumes - PowerPoint PPT Presentation

Mathmatiques - Informatique Restricted Voronoi Diagrams for (re)meshing Surfaces and Volumes Curves and Surfaces 2014 Bruno Lvy ALICE Gomtrie & Lumire CENTRE INRIA Nancy Grand-Est OVERVIEW Part. 1. Introduction Motivations The


  1. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #1: (dense) multi-precision (GMP) c = a 10 * 2 10*32 + b 0 a10 0 0 b0 x 2 10*32 x 2 0

  2. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #2: (sparse) multi-precision c = a 10 * 2 10*32 + b 0 a10 | 10 b0 | 0 Store the exponents of the components

  3. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #2: (sparse) multi-precision c = a 10 * 2 10*32 + b 0 a10 | 10 b0 | 0 Exp. Exp.

  4. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #2: (sparse) multi-precision c = a 10 * 2 10*32 + b 0 a10 | 10 b0 | 0 mantissa Exp. mantissa Exp.

  5. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #2: (sparse) multi-precision c = a 10 * 2 10*32 + b 0 a10 | 10 b0 | 0 mantissa Exp. mantissa Exp. These are floating point numbers !!!

  6. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) x3 x1 x2 These are floating point numbers !!!

  7. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) x3 x1 x2 They are sorted in decreasing exponents These are floating point numbers !!!

  8. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) x3 x1 x2 They are sorted in decreasing exponents - These are floating point numbers !!!

  9. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) x3 x1 x2 They are sorted in decreasing exponents - The sign is determined by the first component (highest exponent) These are floating point numbers !!!

  10. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) Two_sum(double a, double b) x1 x2

  11. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) Two_sum(double a, double b) x1 x2 Length: + l+m Length l Length m

  12. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) Two_sum(double a, double b) x1 x2 Length: + l+m Length: * 2*l A double Length l

  13. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) * Length m Length l Length: 2*l*m Expansion * Expansion product implemented by a recursive function

  14. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) * Length m Length l Length: 2*l*m Expansion * Expansion product implemented by a recursive function Performance ? 10 to 40 times slower than standard doubles

  15. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) * Length m Length l Length: 2*l*m Expansion * Expansion product implemented by a recursive function Performance ? 10 to 40 times slower than standard doubles Use arithmetic filters Adaptive precision [Shewchuk] ? Too complicated to get right

  16. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() Idea #3: expansions (Shewchuk) * Length m Length l Length: 2*l*m Expansion * Expansion product implemented by a recursive function Performance ? 10 to 40 times slower than standard doubles Use arithmetic filters Adaptive precision [Shewchuk] ? Too complicated to get right Quasi-static filters [Meyer and Pion] FPG generator (easy to use)

  17. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() PCK (Predicate Construction Kit) multi_precision.h / multi_precision.cpp - - +,-,*,Sign overloads) a script that generates the filter with FPG [Meyer and Pion] and the exact precision version with expansions

  18. Part. 2 Exact Arithmetics How to implement Side1(), Side2(), Side3() ? +,-,*,Sign() PCK (Predicate Construction Kit) multi_precision.h / multi_precision.cpp - - +,-,*,Sign overloads) a script that generates the filter with FPG [Meyer and Pion] and the exact precision version with expansions So we are done ?

  19. Part. 2 Symbolic Perturbation How to implement Side1(), Side2(), Side3() ? x j x i Not yet !!

  20. Part. 2 Symbolic Perturbation How to implement Side1(), Side2(), Side3() ? x j x i Not yet !!

  21. Part. 2 Symbolic Perturbation

  22. Part. 2 Symbolic Perturbation

  23. Part. 2 Symbolic Perturbation

  24. Part. 2 Symbolic Perturbation

  25. Part. 2 Symbolic Perturbation

  26. Part. 2 Symbolic Perturbation

  27. Part. 2 Symbolic Perturbation

  28. Part. 2 Symbolic Perturbation

  29. Part. 2 Symbolic Perturbation

  30. Part. 2 Symbolic Perturbation

  31. Part. 2 Symbolic Perturbation

  32. Part. 2 Symbolic Perturbation

  33. Part. 2 Symbolic Perturbation

  34. Part. 2 Symbolic Perturbation

  35. Part. 2 Symbolic Perturbation

  36. Part. 2 Symbolic Perturbation

  37. Part. 2 Symbolic Perturbation (i,j) = { p | d 2 ( p , x i ) = d 2 ( p , x j )} x j [Voronoi] x i [Edelsbrunner et.al] [Devillers et.al]

  38. Part. 2 Symbolic Perturbation w (i,j) = { p | d 2 ( p , x i ) - w i = d 2 ( p , x j ) - w j } x j [Voronoi] x i [Edelsbrunner et.al] [Devillers et.al]

  39. Part. 2 Symbolic Perturbation w (i,j) = { p | d 2 ( p , x i ) - w i = d 2 ( p , x j ) - w j } The Voronoi diagram is replaced with a power diagram x j [Voronoi] x i [Edelsbrunner et.al] [Devillers et.al]

  40. Part. 2 Symbolic Perturbation w (i,j) = { p | d 2 ( p , x i ) - w i = d 2 ( p , x j ) - w j } The Voronoi diagram is replaced with a power diagram Symbolic perturbation Simulation of Simplicity: Define the weight as a function of : w i = i x j [Voronoi] x i [Edelsbrunner et.al] [Devillers et.al]

  41. Part. 2 Symbolic Perturbation w (i,j) = { p | d 2 ( p , x i ) - w i = d 2 ( p , x j ) - w j } The Voronoi diagram is replaced with a power diagram Symbolic perturbation Simulation of Simplicity: Define the weight as a function of : w i = i The combinatorics is determined by the limit x j [Voronoi] x i [Edelsbrunner et.al] [Devillers et.al]

  42. Part. 2 Symbolic Perturbation How to write side1(), side2(), side3(), side4() ? d 2 ( q , p j )-w j d 2 ( q , p i ) + w i where: q = w(i,k 1 w(i,k d 1 ,p 2 ,p 3 d ]

  43. Part. 2 Symbolic Perturbation How to write side1(), side2(), side3(), side4() ? d 2 ( q , p j )-w j d 2 ( q , p i ) + w i where: q = w(i,k 1 w(i,k d 1 ,p 2 ,p 3 d ] q w (i,k 1 ) { Solve for q in: q w (i,k d ) [p 1 ,p 2 ,p 3 d ] q

  44. Part. 2 Symbolic Perturbation How to write side1(), side2(), side3(), side4() ? d 2 ( q , p j )-w j d 2 ( q , p i ) + w i where: q = w(i,k 1 w(i,k d 1 ,p 2 ,p 3 d ] q = (1/d) Q q w (i,k 1 ) { Solve for q in: Keep numerator and denom. q w (i,k d ) separate (remember, we are [p 1 ,p 2 ,p 3 d ] not allowed to divide) q

  45. Part. 2 Symbolic Perturbation How to write side1(), side2(), side3(), side4() ? d 2 ( q , p j )-w j d 2 ( q , p i ) + w i where: q = w(i,k 1 w(i,k d 1 ,p 2 ,p 3 d ] q = (1/d) Q q w (i,k 1 ) { Solve for q in: Keep numerator and denom. q w (i,k d ) separate (remember, we are [p 1 ,p 2 ,p 3 d ] not allowed to divide) q Inject q=(1/d) Q in side1() and mutliply by d to remove the division

  46. Part. 2 Symbolic Perturbation How to write side1(), side2(), side3(), side4() ? d 2 ( q , p j )-w j d 2 ( q , p i ) + w i where: q = w(i,k 1 w(i,k d 1 ,p 2 ,p 3 d ] q = (1/d) Q q w (i,k 1 ) { Solve for q in: Keep numerator and denom. q w (i,k d ) separate (remember, we are [p 1 ,p 2 ,p 3 d ] not allowed to divide) q Inject q=(1/d) Q in side1() and mutliply by d to remove the division Order the terms in w i = i

  47. Part. 2 Symbolic Perturbation How to write side1(), side2(), side3(), side4() ? d 2 ( q , p j )-w j d 2 ( q , p i ) + w i where: q = w(i,k 1 w(i,k d 1 ,p 2 ,p 3 d ] q = (1/d) Q q w (i,k 1 ) { Solve for q in: Keep numerator and denom. q w (i,k d ) separate (remember, we are [p 1 ,p 2 ,p 3 d ] not allowed to divide) q Inject q=(1/d) Q in side1() and mutliply by d to remove the division Order the terms in w i = i the constant one is non-perturbed predicate if zero, the first non-zero one determines the sign

  48. Part. 2 Symbolic Perturbation side1 #include "kernel.pckh" Sign predicate(side1)( point(p0), point(p1), point(q0) DIM ) { scalar r = sq_dist(p0,p1) ; r -= 2*dot_at(p1,q0,p0) ; generic_predicate_result(sign(r)) ; begin_sos2(p0,p1) sos(p0,POSITIVE) sos(p1,NEGATIVE) end_sos } Source PCK

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend