350 likes | 476 Views
Bounding Iterated Function Systems. Orion Sky Lawlor olawlor@uiuc.edu CS 497jch November 14, 2002. Roadmap. Introduction to IFS Rice’s Bounding Spheres Lawlor’s Polyhedral Bounds. Iterated Function Systems. Iterated Function Systems--IFS.
E N D
Bounding Iterated Function Systems Orion Sky Lawlor olawlor@uiuc.edu CS 497jch November 14, 2002
Roadmap • Introduction to IFS • Rice’s Bounding Spheres • Lawlor’s Polyhedral Bounds
Iterated Function Systems--IFS • A finite set of “maps”—distortions of some space • Apply the maps in random order • Converges to unique “attractor” • Equivalent to L-systems, others • E.g., Mandelbrot set is just convergence diagram for a one-map 2D IFS: complex squaring
Example IFS—Sierpinski Gasket Shape is 3 copies of itself, so we use 3 maps:
Example IFS—Sierpinski Gasket Shape is 3 copies of itself, so we use 3 maps: • Map to top
Example IFS—Sierpinski Gasket Shape is 3 copies of itself, so we use 3 maps: • Map to top • Map down right
Example IFS—Sierpinski Gasket Shape is 3 copies of itself, so we use 3 maps: • Map to top • Map down right • Map down left
Example IFS—Sierpinski Gasket Many other, equivalent options
IFS Gallery: Five Non-Platonic Non-Solids Reproduced from Hart and DeFanti, SIGGRAPH 1991
IFS Gallery: Fractal Forest Reproduced from Hart and DeFanti, SIGGRAPH 1991
IFS Conclusions • An IFS is just a set of maps of space • Pastes shape onto copies of itself • IFS are useful tool for representing fractal shapes • Wide variation in results • Arbitrary number of dimensions • Beautiful, natural look • Easy to produce/manipulate
Why bother bounding an IFS? • For display, processing, etc. • Raytracing [Hart, DeFanti ‘91] • Intersect rays with bounds • Replace nearest intersecting bound with a set of smaller bounds • Repeat until miss or ‘close enough’
Why Bound IFS with Spheres? • Spheres are a commonly used bounding volume for raytracing • Very fast intersection test—a few multiplies and adds • Invariant under rotation • Rotate a sphere, nothing happens • Closed under scaling • Scale a sphere, get a sphere • Easy to represent and work with
Recursive Bounds for IFS • Each map of the bound must lie completely within the bound • B contains map(B) • Now we just recurse to the attractor • B contains map(B) contains map(map(B)) contains map(map(map(B)))...
Sphere Bound for IFS • Each map of the sphere must lie completely within the sphere • This is our “recursive bound” Knowns wi Map number i si Scaling factor of wi Unknowns r Radius of big sphere x Center of big sphere
dist(x, wi (x)) si r x r Sphere Bound for IFS [Rice, 1996] • We require dist(x, wi (x)) + si r < r • Equivalently r > dist(x, wi (x))/(1 - si ) • We must pickx to minimize r • Nonlinear optimization problem (!)
Sphere Bound Conclusions • Spheres are nice bounding volumes • Especially for raytracing • Hart gives a heuristic for sphere bounds • Rice shows how to find optimal (recursive) sphere bound • Requires nonlinear optimization • Complex, slow (?)
Why Bound IFS with Polyhedra? • Includes many common shapes • Box, tetrahedron, octahedron, ... • Bounding boxes are the other commonly used bounding volume for raytracing • A better fit for elongated objects • Computers don’t like curves (nonlinear optimization); a polyhedron has no curves
Why not Bound IFS with Polyhedra? • Polyhedra have corners, which might stick out under rotation • Can always fix by adding sides • Not so bad in practice !
Polyhedral Bound for IFS • Each map of the polyhedron should lie completely within the original polyhedron • Again, a “recursive bound” Knowns wm (x) Map number m ns Normal of side s Unknowns ds Displacement of side s
Polyhedron Bounding, in Words • We will require • Each corner of the polyhedron • Under each map • To satisfy all polyhedron halfspaces
Point-in-Polyhedron Test • Points inside polyhedron must lie inside all halfspaces • Point lies in a halfspace if
Polyhedron corners (2D Version) • The corner of sides i and j is where both halfspaces meet or, if we define
Polyhedron Bounding, in Equations • We require: • Each corner of the polyhedron (linear) • Under each map (linear) • To satisfy all the halfspaces (linear) • These are linear constraints (I M S of them)
Linear Optimization [Lawlor 2002] • We’ve reduced IFS bounding to a problem in linear optimization • Constraints: Just shown • Unknowns: Displacements ds • Objective: Minimize sum of displacements? (Probably want to minimize area or length instead) • Guaranteed to find the optimal bound if it exists (for some definition of “optimal”)
2D Implementation • Used open-source linear solver package lp_solve 3.2 • Written in C++ • Generating constraints take about 40 lines (with comments) • Would be even shorter with a better matrix class • Welded to a GUI
Time vs. Number of Sides O(s4.6) time; all in solver
Area vs. Number of Sides Little benefit to using more than 12 sides
Convex IFS Bounds: Conclusions • Optimal polyhedron bounding using linear optimization • Off-the-shelf solvers • Piles of nice theory (optimality!) • Fast enough for interactive use • Future directions • RIFS Bounding (solve for attractorlet bounds) • Implement in 3D