35
Quadtrees: Non- Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert Acar, PhD. Project’s Owner: Paul Castillo, PhD. Yurin Holguino Borda, Grad. Student [email protected] Hillary Caituiro Monge, Grad. Student [email protected] Design and Implementation

Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Embed Size (px)

Citation preview

Page 1: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Quadtrees: Non-Uniform Mesh Generation

Universidad de Puerto Rico – MayagüezMathematics Department

Computational Geometric CourseCourse Professor: Robert Acar, PhD.Project’s Owner: Paul Castillo, PhD.

Yurin Holguino Borda, Grad. Student [email protected]

Hillary Caituiro Monge, Grad. [email protected]

Design and Implementation

Page 2: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Contents

Motivation Non-Uniform Meshes Quadtrees From Quadtrees to Meshes Implementation Demo

Page 3: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Motivation 1

Problem: heat transfer on printed board circuits

Simulate: approximation using finite elements methods

Such methods first divide the board into small regions, or elements: triangles quadrilaterals

Page 4: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Motivation 2

The head that each element emits by itself is assumed to be known

It is also assumed to be known how neighboring elements influence each other

This leads to a big system of equations, which is then solved numerically

Page 5: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Motivation 3

The accuracy of finite element methods depends heavily on the mesh: The finer the mesh, the better the solution

Computation time for the numerical process increases drastically when the number of elements increases So, we would like to use a fine mesh only when

necessary

Page 6: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Non-Uniform Meshes

The input is a square (the printed circuit board) a number of polygonal components inside it

Mesh should be fine only where necessary It should be fine near the edges of the

components and coarse far away from the edges

Page 7: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Quadtree Introduction 1/2

Is a non-uniform mesh generation method A quadtree is a rooted tree in which every

intern node has four children labeled NE, NW, SW, and SE

Every node in the quadtree corresponds to a square

NE NWSESW

Page 8: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Quadtree Introduction 2/2

Quadtrees can be used to store different types of data

We will describe the variant that stores a set of polygons in the plane

The recursive splitting of squares continues as long as either There is no intersection with the set of polygons Is reached a user-defined deep

Page 9: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Quadtree Generation 1/3

Algorithm GenerateQuadtree(P) Input. A set P of polygons Output. A quadtree

1. Find the smallest rectangle R containing P2. Make a set S of segments from P3. Create a new empty quadtree Q4. Qroot GenerateQuadtreeNodes(Qroot, S,

R)5. return Q

Page 10: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Quadtree Generation 2/3

Algorithm GenerateQuadtreeNodes(N, S, R) Input. A node N, a set S of segments, and a rectangle R

1. Do: create N; N.r R; N.s s; and deep++ 2. If S does not intersect R then return3. If deep = MAXDEEP then return4. Make S’ with the segments of S that intersect with R5. Divide R in four rectangles RNE, RNW, RSW, RSE 6. NNE GenerateQuadtreeNodes(NNE, S’, RNE);7. NNW GenerateQuadtreeNodes(NNW , S’, RNW);8. NSW GenerateQuadtreeNodes(NSW , S’, RSW);9. NSE GenerateQuadtreeNodes(NSE , S’, RSE);10. return N

Page 11: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Quadtree Generation 3/3

NE NW SESW

Page 12: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Balancing a Quadtree 1/2

Algorithm BalanceQuadTree(T) Input. A quadtree T Output. A balanced version of T,

1. Balance the quadtree in such manner that any two leaves whose squares are neighbors differ at most one in depth.

Page 13: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Balancing a Quadtree 2/2

Page 14: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

From Quadtrees to Meshes 1/2 Algorithm GenerateRectangularMesh(P)

Input. A set P of polygons Output. A rectangular Mesh

1. Q GenerateQuadtree(P)

2. T BalanceQuadTree(Q)

3. Construct a doubly-connected edge list from T in M

4. return M

Page 15: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

From Quadtrees to Meshes 2/2 Algorithm GenerateTriangularMesh(P)

Input. A set P of polygons Output. A triangular Mesh

1. Q GenerateQuadtree(P)2. T BalanceQuadTree(Q) 3. Construct a doubly-connected edge list from T in

M

4. return M

Page 16: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Implementation

Java tools Simplified Demonstrative purpose It has a GUI embed in a Java Applet that is

published in the project web page C++ tools

Intended to be a tool to be used in scenarios where a high performance is required

Our C++ version has a visualization tool developed using OpenGL

Page 17: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 18: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 19: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 20: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 21: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 22: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 23: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 24: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Demo

Page 25: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 26: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 27: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 28: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 29: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 30: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 31: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 32: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 33: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 34: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert
Page 35: Quadtrees: Non-Uniform Mesh Generation Universidad de Puerto Rico – Mayagüez Mathematics Department Computational Geometric Course Course Professor: Robert

Questions