SCM Repository
[diderot] / branches / pure-cfg / test / lic.diderot |
View of /branches/pure-cfg/test/lic.diderot
Parent Directory
|
Revision Log
Revision 1382 -
(download)
(annotate)
Thu Jun 23 20:03:05 2011 UTC (9 years, 7 months ago) by jhr
File size: 1307 byte(s)
Thu Jun 23 20:03:05 2011 UTC (9 years, 7 months ago) by jhr
File size: 1307 byte(s)
merging changes from trunk
// lic.diderot // // simple demo of the line integral convolution (LIC) method // of vector field viz // // process output with: // unu reshape -i mip.txt -s 300 200 | unu quantize -b 8 -o lic.png int imgSizeX = 300; int imgSizeY = 200; real h = 0.01; // step size of integration int stepNum = 25; // take this many steps both upstream and downstream field#1(2)[2] V = load("../data/vorttest.nrrd") ⊛ ctmr; field#0(2)[] R = load("../data/vorttest-rand.nrrd") ⊛ tent; strand LIC (int xi, int yi) { real xx = lerp(0.0, 3.0, -0.5, real(xi), real(imgSizeX)-0.5); real yy = lerp(0.0, 2.0, -0.5, real(yi), real(imgSizeY)-0.5); vec2 pos0 = [xx,yy]; vec2 forw = pos0; vec2 back = pos0; output real sum = R(pos0); int step = 0; update { // Euler integration step // forw = forw + h*V(forw); // back = back - h*V(back); // Midpoint method step forw += h*V(forw + 0.5*h*V(forw)); back -= h*V(back - 0.5*h*V(back)); sum += R(forw) + R(back); step += 1; if (step == stepNum) { // modulate output by velocity at initial position sum = |V(pos0)|*sum/real(1 + 2*stepNum); stabilize; } } } initially [ LIC(xi, yi) | yi in 0..(imgSizeY-1), xi in 0..(imgSizeX-1) ];
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |