Download presentation
Presentation is loading. Please wait.
Published byStuart Turner Modified over 9 years ago
1
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 yurin_hb@math.uprm.edu Hillary Caituiro Monge, Grad. Student hcaituiro@ece.uprm.edu Design and Implementation
2
Contents Motivation Non-Uniform Meshes Quadtrees From Quadtrees to Meshes Implementation Demo
3
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
4
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
5
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
6
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
7
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 NENW SESW
8
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
9
Quadtree Generation 1/3 Algorithm GenerateQuadtree(P) Input. A set P of polygons Output. A quadtree 1. Find the smallest rectangle R containing P 2. Make a set S of segments from P 3. Create a new empty quadtree Q 4. Q root GenerateQuadtreeNodes(Q root, S, R) 5. return Q
10
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 return 3. If deep = MAXDEEP then return 4. Make S’ with the segments of S that intersect with R 5. Divide R in four rectangles R NE, R NW, R SW, R SE 6. N NE GenerateQuadtreeNodes(N NE, S’, R NE ); 7. N NW GenerateQuadtreeNodes(N NW, S’, R NW ); 8. N SW GenerateQuadtreeNodes(N SW, S’, R SW ); 9. N SE GenerateQuadtreeNodes(N SE, S’, R SE ); 10. return N
11
Quadtree Generation 3/3 NE NW SESW
12
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.
13
Balancing a Quadtree 2/2
14
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
15
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
16
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
24
Demo
35
Questions
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.