hank childs, university of oregon lecture #9 cis 410/510: advection (part 4!)
TRANSCRIPT
![Page 1: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/1.jpg)
Hank Childs, University of OregonLecture #9
CIS 410/510: Advection (Part 4!)
![Page 2: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/2.jpg)
Outline
• Announcements• Review• Advection
![Page 3: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/3.jpg)
Outline
• Announcements• Review• Advection
![Page 4: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/4.jpg)
Announcements
• Weekly OH: Weds 1-2, Thurs: 11:30-12:30• Sat OH are tough: fly at 1pm• John & Jeff announcement
• Also: quiz on October 27th
![Page 5: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/5.jpg)
Outline
• Announcements• Review• Advection
![Page 6: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/6.jpg)
Particle advection is the foundation to many visualization algorithms
Advection will require us to evaluate velocity at arbitrary locations.
![Page 7: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/7.jpg)
LERPing vectors• LERP = Linear Interpolate• Goal: interpolate vector
between A and B.• Consider vector X, where X = B-A• A + t*(B-A) = A+t*X• Takeaway: – you can LERP the components
individually– the above provides motivation for
why this works
A
B
X = B-A
AX
} t
A+t*X
![Page 8: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/8.jpg)
Formal definition for particle advection• Output is an integral curve, S, which follows
trajectory of the advection• S(t) = position of curve at time t– S(t0) = p0
• t0: initial time
• p0: initial position
– S’(t) = v(t, S(t))• v(t, p): velocity at time t and position p• S’(t): derivative of the integral curve at time t
This is an ordinary differential equation (ODE).
![Page 9: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/9.jpg)
The integral curve for particle advection is calculated iteratively
S(t0) = p0
while (ShouldContinue()){ S(ti) = AdvanceStep(S(t(i-1))
}
Many possible criteria for ShouldContinue. For now, assume fixed number of steps.
![Page 10: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/10.jpg)
AdvanceStep goal: to calculate Si from S(i-1)
S1 = AdvanceStep(S0)S0
S1 S2 = AdvanceStep(S1)
S2 S3 = AdvanceStep(S2)S3
S4 = AdvanceStep(S3)S4
S5 = AdvanceStep(S4)
S5This picture is misleading:
steps are typically much smaller.
![Page 11: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/11.jpg)
AdvanceStep Overview
• Different numerical methods for implementing AdvanceStep:– Simplest version: Euler step– Most common: Runge-Kutta-4 (RK4)– Several others as well
![Page 12: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/12.jpg)
Runge-Kutta Method (RK4)
• Most common method for solving an ODE• Definition: – First, choose step size, h.– Second, AdvanceStep(pi, ti) returns:
• New position: pi+1 = pi+(1/6)*h*(k1+2k2+2k3+k4)– k1 = v(ti, pi)
– k2 = v(ti + h/2, pi + h/2*k1)
– k3 = v(ti + h/2, pi + h/2*k2)
– k4 = v(ti + h, pi + h*k3)
• New time: ti+1 = ti+h
![Page 13: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/13.jpg)
Physical interpretation of RK4• New position: pi+1 = pi+(1/6)*h*(k1+2k2+2k3+k4)
– k1 = v(ti, pi)
– k2 = v(ti + h/2, pi + h/2*k1)
– k3 = v(ti + h/2, pi + h/2*k2)
– k4 = v(ti + h, pi + h*k3)pi
v(ti, pi) = k1
pi+ h/2*k1
v(ti+h/2, pi+h/2*k1) = k2
pi+ h/2*k2
v(ti+h/2, pi+h/2*k2) = k3
pi+ h*k3
v(ti+h, pi+h*k3) = k4
Evaluate 4 velocities, use combination to calculate pi+1
![Page 14: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/14.jpg)
Steady versus Unsteady State
• Unsteady state: the velocity field evolves over time
• Steady state: the velocity field has reached steady state and remains unchanged as time evolves
![Page 15: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/15.jpg)
Outline
• Announcements• Review• Advection
![Page 16: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/16.jpg)
Dealing with steady state velocities
• Euler Method (unsteady):– New position: pi+1 = pi+h*v(ti, pi)
– New time: ti+1 = ti+h
• Euler Method (steady):– New position: pi+1 = pi+h*v(t0, pi)
– New time: ti+1 = ti+h
![Page 17: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/17.jpg)
Unsteady vs Steady: RK4
• Unsteady:– New position: pi+1 = pi+(1/6)*h*(k1+2k2+2k3+k4)
• k1 = v(ti, pi)
• k2 = v(ti + h/2, pi + h/2*k1)
• k3 = v(ti + h/2, pi + h/2*k2)
• k4 = v(ti + h, pi + h*k3)• New time: ti+1 = ti+h
![Page 18: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/18.jpg)
Unsteady vs Steady: RK4
• Steady:– New position: pi+1 = pi+(1/6)*h*(k1+2k2+2k3+k4)
• k1 = v(t0, pi)
• k2 = v(t0, pi + h/2*k1)
• k3 = v(t0, pi + h/2*k2)
• k4 = v(t0, pi + h*k3)• New time: ti+1 = ti+h
![Page 19: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/19.jpg)
Project 4
• Assigned last weekend, prompt online• Due Oct. 24th, midnight ( October 25th, 6am)• Worth 7% of your grade• Provide:
– Code skeleton online– Correct answers provided
• You send me: – source code– screenshot with:
• text output on screen• image of results
![Page 20: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/20.jpg)
Project 4 in a nutshell
• Do some vector LERPing• Do particle advection
with Euler steps• Examine results
![Page 21: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/21.jpg)
Project 4 in a nutshell
• Implement 3 methods:– EvaluateVectorFieldAtLocation• LERP vector field. (Reuse code from before, but now
multiple component)
– AdvectWithEulerStep• You know how to do this
– CalculateArcLength• What is the total length of the resulting trajectory?
![Page 22: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/22.jpg)
Project 5 in a nutshell• Implement Runge-Kutta 4• Assess the quality of RK4 vs Euler• Open ended project– I don’t tell you how to do this assessment.
• You will need to figure it out.• Multiple right answers
• Deliverable: short report (~1 page) describing your conclusions and methodology.– Pretend that your boss wants to know which method to use
and you have to convince her which one is the best and why.• Not everyone will receive full credit.
![Page 23: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/23.jpg)
Additional Particle Advection Techniques
• This content courtesy of Christoph Garth, Kaiserslautern University.
![Page 24: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/24.jpg)
Streamline, Pathline,Timeline, Streakline
• Streamline: steady state velocity, plot trajectory of a curve
• Pathline: unsteady state velocity, plot trajectory of a curve
• Timeline: start with a line, advect that line and plot the line’s position at some future time
![Page 25: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/25.jpg)
Streamline, Pathline,Timeline, Streakline
• Streamline: steady state velocity, plot trajectory of a curve
• Pathline: unsteady state velocity, plot trajectory of a curve
• Timeline: start with a line, advect that line and plot the line’s position at some future time
• Streakline: unsteady state, introduce new particles at a location continuously
![Page 26: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/26.jpg)
Streaklines
Will do an example on the board
![Page 27: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/27.jpg)
Streaklines in real life
![Page 28: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/28.jpg)
• Stream surface:– Start with a seeding curve– Advect the curve to form a surface
![Page 29: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/29.jpg)
• Stream surface:– Start with a seeding curve– Advect the curve to form a surface
![Page 30: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/30.jpg)
Stream Surface Computation
• Skeleton from Integral Curves + Timelines
![Page 31: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/31.jpg)
• Skeleton from Integral Curves + Timelines• Triangulation
Generation of Accurate Integral Surfaces in Time-Dependent Vector Fields. C. Garth, H. Krishnan, X. Tricoche, T. Bobach, K. I. Joy. In IEEE TVCG, 14(6):1404–1411, 2007
Stream Surface Computation
![Page 32: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/32.jpg)
Stream Surface Example
![Page 33: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/33.jpg)
Stream Surface Example
![Page 34: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/34.jpg)
Vortex system behind ellipsoid
Stream Surface Example #2
![Page 35: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/35.jpg)
Lagrangian Methods• Visualize manifolds of maximal stretching in
a flow, as indicated by dense particles
• Finite-Time Lyapunov Exponent (FTLE)
![Page 36: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/36.jpg)
Lagrangian Methods• Visualize manifolds of maximal stretching in
a flow, as indicated by dense particles
– forward in time: FTLE+ indicates divergence– Backward in time: FTLE+ indicates convergence
![Page 37: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/37.jpg)
Isosurfacing
![Page 38: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/38.jpg)
Height field over a terrain
![Page 39: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/39.jpg)
Height field over a terrain
![Page 40: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/40.jpg)
Transparent grey plane at fixed elevation (height=20)
![Page 41: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/41.jpg)
Rendering just the intersection of the plane and the height field
![Page 42: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/42.jpg)
Projecting the “height = 20” lines back to 2D space
These lines are called isolines.
Isolines represent a
region where the field is constant.
The isovalue for this plot is 20.
![Page 43: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/43.jpg)
Plotting both isolines and height
Have you ever seen a plot like this before?Where?
![Page 44: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/44.jpg)
Elevation Map of a Shield Volcano
![Page 45: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/45.jpg)
Neat Project for Understanding Isolines
![Page 46: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/46.jpg)
Neat Project for Understanding Isolines
classroomcompulsion.blogspot.com
![Page 47: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/47.jpg)
Isolines vs Isosurfaces
• Isolines:– Input: scalar field over 2D space– Output: lines
• Isosurfaces:– Input: scalar field over 3D space– Output: surface
• Commonalities:– Reduce topological dimension by 1– Produce output where scalar field is constant
![Page 48: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/48.jpg)
Isosurface of temperature from star explosion simulation
(ignore blue haze)
![Page 49: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/49.jpg)
Iterating Over Cells
• For isosurface/isoline calculation, we can iterate over the cells.
• At the end, we take the results from each cell and put them into a single scene.
![Page 50: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/50.jpg)
First isoline calculation
Goal: calculate isoline for field=0.5.
Quiz: do you have all the information you
need?
Quiz: draw this graph and sketch the
isoline.
![Page 51: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/51.jpg)
10x10 sampling of the fieldColors:
>0.5: red
<0.5: blue
What observations can we make from
this sampling?
![Page 52: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/52.jpg)
100x100 sampling of the fieldColors:
>0.5: red
<0.5: blue
0.5: white
What observations can we make from
this sampling?
![Page 53: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/53.jpg)
Per pixel sampling of the fieldColors:
>0.5: red
<0.5: blue
0.5: white
What observations can we make from
this sampling?
![Page 54: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/54.jpg)
Isolines• Correct isoline appears to
be close to a quarter circle around (0,0) of radius 0.5.
• Quiz: How would we represent this quarter circle?
Colors: >0.5:
red<0.5:
blue0.5:
white
![Page 55: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/55.jpg)
Reality Check: context for isolines
• We have millions of cells• If one cell can produce tens or hundreds of
lines, then the isolines could take much more memory than the input data set
![Page 56: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/56.jpg)
Quiz
• You want to understand which will take more memory: the isolines or the input data set.
• What facts do you need to know?
![Page 57: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/57.jpg)
Quiz answer
• You want to understand which will take more memory: the isolines or the input data set.
• What facts do you need to know?• Need to know:– How much data per cell– How much data per isoline in a cell– How many cells contain isolines
![Page 58: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/58.jpg)
How many cells contain isolines?This cell contains isolines if the isovalue is between 0 and 1. Otherwise, it does not.
This question is data dependent & then depends on the isovalue.
![Page 59: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/59.jpg)
How much data per isoline in a cell?
Straight lines are easy to represent.The memory for the correct answer is variable.
![Page 60: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/60.jpg)
Big picture: what do we want from our isosurface?
• Tractable computation– Can’t create 100s or
1000s of line segments per cell for super-accurate representation
• Continuous surface– Triangles (or lines for
isolines) need to connect up … no gaps.
![Page 61: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/61.jpg)
Big idea #1: approximate the isolines / isosurface
• Isolines: represent them with a minimal # of segments
• Isosurface: represent them with a minimal # of triangles
![Page 62: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/62.jpg)
Quiz: how to approximate our “quarter circle”?
![Page 63: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/63.jpg)
Big picture: what do we want from our isosurface?
• Tractable computation– Can’t create 100s or 1000s of line
segments per cell for super-accurate representation
• Quiz: did we accomplish this?– Yes: very few per cell
• Continuous surface– Triangles (or lines for isolines) need to
connect up … no gaps.• Quiz: did we accomplish this?Answer: we got the answer exactly right at the edge
of the cell … hence no gaps.
![Page 64: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/64.jpg)
Effect of different isovalues
Field = 0.25 Field = 0.7 Field = 0.9
What are the similarities between these pictures?
Assume this cell layoutX:01, Y:01, F(0,0) = 0, F(1,0) = F(1,1) = F(0,1) = 1
Quiz: write pseudocode to calculate the isoline for any V, 0 < V < 1
![Page 65: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/65.jpg)
Assume this cell layoutX:01, Y:01, F(0,0) = 0, F(1,0) = F(1,1) = F(0,1) = 1
Quiz: write pseudocode to calculate the isoline for any V, 0 < V < 1
Answer: { return ((V, 0), (0, V)); }
Field = 0.25 Field = 0.7 Field = 0.9
![Page 66: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/66.jpg)
Consider arbitrary layout
F(0,0) = A F(1,0) = B
F(0,1) = C F(1,1) = DA < VV < BV < CV < D(V == isovalue)
Note that the mesh coordinates are
pretty simple … you will need to take real coordinates
into account.
Where is isoline?
![Page 67: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/67.jpg)
Consider arbitrary layout
F(0,0) = A F(1,0) = B
F(0,1) = C F(1,1) = D
A < VV < BV < CV < D(V == isovalue)
Where is isoline?
P1
P2P1 = (x,0)P2 = (0,y)
Quiz:What are x and y?
t = (V-A)/(B-A)x = 0+t*(1-0)
t = (V-A)/(C-A)y = 0+t*(1-0)
![Page 68: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/68.jpg)
Claim: we understand one case
• Case “1”:– F(P0) < V– V < F(P1)– V < F(P2)– V < F(P3)
• Quiz: how many cases are there?• Answer:– 2 possible states for each point P: F(P) < V or V < F(P)
• (note we ignore F(P) == V for today)
– 4 vertices, so … 24 = 16 cases• Some cases are similar to each other
![Page 69: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/69.jpg)
The 16 cases Case
0Ca
se 1
-5Ca
se 6
-10
Case
11-
15
![Page 70: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/70.jpg)
The 16 cases Case
0Ca
se 1
-5Ca
se 6
-10
Case
11-
15
We explored case 14Quiz: write down cases #s that are similar to case 14
![Page 71: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/71.jpg)
The 16 cases Case
0Ca
se 1
-5Ca
se 6
-10
Case
11-
15
Quiz: how many different groupings are there?
![Page 72: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/72.jpg)
The 16 casesQuiz answer: There are 4 groupings
![Page 73: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/73.jpg)
Problem case: ambiguity!!
Solution: just pick one and go with it.
![Page 74: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/74.jpg)
Physical interpretation of ambiguity
One way connects them up, the
other separates them.
What’s right?
![Page 75: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/75.jpg)
Big idea #2: pre-computation of all cases
• Pre-compute correct answers for all 16 cases and store them in a lookup table
• For each cell, identify which case it is in• Then use corresponding lookup table to
generate isosurface
If you knew which case you had, then
you would know how to proceed
![Page 76: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/76.jpg)
• Pre-compute correct answers for all 16 cases and store them in a lookup table
• For each cell, identify which case it is in• Then use corresponding lookup table to
generate isosurface
If you knew which case you had, then
you would know how to proceed
Big idea #2: pre-computation of all cases
![Page 77: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/77.jpg)
Pre-compute correct answers for all 16 cases and store them in a lookup table
• Observations about correct answers for a case:– It contains one or two
line segments– The ends of the line
segments are always along edges.
![Page 78: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/78.jpg)
Pre-compute correct answers for all 16 cases and store them in a lookup table
• The ends of the line segments are always along edges.– We will need to
number the edges
Edge 0
Edge
1
Edge 2
Edge 3
![Page 79: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/79.jpg)
Pre-compute correct answers for all 16 cases and store them in a lookup table
• Correct answer for this case:– There is one line
segment– That line segment has
end points on edge 0 and edge 3 Edge 0
Edge
1
Edge 2
Edge 3
![Page 80: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/80.jpg)
• Pre-compute correct answers for all 16 cases and store them in a lookup table
• For each cell, identify which case it is in• Then use corresponding lookup table to
generate isosurface
If you knew which case you had, then
you would know how to proceed
Big idea #2: pre-computation of all cases
![Page 81: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/81.jpg)
For each cell, identify which case it is in
• 4 vertices• Each has one of 2
possible classification values– Lower than isovalue• Call this “0”
– Higher than isovalue• Call this “1”
– (ignore equality case)
Vertex 1
Vertex 2 Vertex 3
Vertex 0
Quiz: write down classification value for each vertex
1
11
0
![Page 82: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/82.jpg)
For each cell, identify which case it is in
• Goal: turn classification values into a number– Number should be
between 0 and 15• Idea: use binary
numbers– V3V2V1V0 1 1 1 0 14
Vertex 1
Vertex 2 Vertex 3
Vertex 0
1
11
0
This is case 14
![Page 83: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/83.jpg)
The 16 cases Case
0Ca
se 1
-5Ca
se 6
-10
Case
11-
15
0
00
0
0
00
1 1
00
0 1
00
1 0
01
0 0
01
1
1
01
0 1
01
1 0
10
0 0
10
1 1
10
0
1
11
0 1
11
10
11
10
11
01
10
1
![Page 84: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/84.jpg)
• Pre-compute correct answers for all 16 cases and store them in a lookup table
• For each cell, identify which case it is in• Then use corresponding lookup table to
generate isosurface
If you knew which case you had, then
you would know how to proceed
Big idea #2: pre-computation of all cases
![Page 85: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/85.jpg)
Then use corresponding lookup table to generate isosurface
int numSegments[16];numSegments[0] = 0;...numSegments[6] = 2;...numSegments[14] = 1;
numSegments[15] = 0;
![Page 86: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/86.jpg)
Then use corresponding lookup table to generate isosurface
int lup[16][4]; // lup == lookuplup[0][0] = lup[0][1] = lup[0][2] = lup[0][3] = -1;...lup[6][0] = 0; lup[6][1] = 1; lup[6][2]=2; lup[6][3] = 3;…lup[14][0] = 0; lup[14][1] = 3; lup[14][2] = lup[14][3] = -1;
lup[15][0] = lup[15][1] = lup[15][2] = lup[15][3] = -1;
![Page 87: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/87.jpg)
Then use corresponding lookup table to generate isosurface
int icase = IdentifyCase(cell); // case is a reserved word in C++int nsegments = numSegments[icase];for (int i = 0 ; i < nsegments ; i++){ int edge1 = lup[icase][2*i]; float pt1[2] = // Interpolate position along edge1 int edge2 = lup[icase][2*i+1]; float pt2[2] = // Interpolate position along edge2 AddLineSegmentToOutput(pt1, pt2);}
![Page 88: Hank Childs, University of Oregon Lecture #9 CIS 410/510: Advection (Part 4!)](https://reader036.vdocuments.us/reader036/viewer/2022062315/5697bfaa1a28abf838c9a984/html5/thumbnails/88.jpg)
Next Time
• Review 2D• Extensions for 3D• More discussion of isosurface calculation• Project 6• Quiz on particle advection