SCM Repository
View of /branches/charisee/ertest/vispaper/iso3d/iso3d.diderot
Parent Directory
|
Revision Log
Revision 2901 -
(download)
(annotate)
Fri Feb 27 22:54:08 2015 UTC (6 years, 1 month ago) by glk
File size: 2500 byte(s)
Fri Feb 27 22:54:08 2015 UTC (6 years, 1 month ago) by glk
File size: 2500 byte(s)
trying more things
/* ../../../bin/diderotc iso3d.diderot \ && ./iso3d \ && unu crop -i iso3d.txt -min 0 0 -max 1 M | \ unu jhisto -b 600 600 -min -1.2 -1.2 -max 1.2 1.2 -t float | \ unu 1op log1p | \ unu quantize -b 8 -o iso3d.png \ && open iso3d.png */ field#2(3)[] V= bspln3 ⊛ load("parab0.nrrd"); field#2(3)[] U= bspln3 ⊛ load("parab1.nrrd"); // isosurface of V itself: works //field#1(3)[] F = V - 0.5; // isosurface of |∇V|: works //field#1(3)[] F = |∇V| - 1; // lifting vector op to constant vector and field: does not work? // [iso3d.diderot:24.1-25.0] Error: type error for arguments of binary operator "•" // found: (field#1(3)[3] * vec3) // lifting vector op to constant vector and field: does not work? //field#1(3)[] F = ∇V • [1,0,0]; // [iso3d.diderot:27.18-34] Error: unable to resolve overloaded operator '-' // argument type is: (field#1(3)[3] * vec3) //field#1(3)[] F = |∇V - [1,0,0]|; // lifting vector op to two fields field#1(3)[] F = ∇V • ∇U - 1; // does work //field#1(3)[] F = |∇V - ∇U| - 0.01; // never finishes compiling? // trying operation on a normalized gradient; never seems to finish compiling // eventually starts printing things like: // ../../../bin/diderotc: Error -- unable to map 1071775744 bytes, errno = 12 // ../../../bin/diderotc: Error -- unable to allocate to-space for generation 5; trying smaller size // ../../../bin/diderotc: Error -- unable to map 1073152000 bytes, errno = 12 // ../../../bin/diderotc: Error -- unable to allocate to-space for generation 5; trying smaller size //field#1(3)[3] N = ∇V/|∇V|; //field#1(3)[] F = ∇•N; int grid = 30; int stepsMax = 10; real epsilon = 0.000001; strand RootFind(real xi,real xj, real xk) { output vec3 x = [xi,xj,xk]; int steps = 0; update { // Stop if we're no longer inside or taken too many steps. if (!inside(x, V) || steps > stepsMax) die; // subsequent expressions are undefined if |∇F| is zero if (|∇F(x)| == 0.0) die; // the Newton-Raphson step vec3 delta = normalize(∇F(x)) * F(x)/|∇F(x)|; // we've converged if the change is small enough if (|delta| < epsilon) stabilize; x -= delta; steps += 1; } } initially { RootFind(lerp(-2, 2, -0.5, ui, grid-0.5), lerp(-2, 2, -0.5, vi, grid-0.5), lerp(-2, 2, -0.5, wi, grid-0.5)) | wi in 0..(grid-1), vi in 0..(grid-1), ui in 0..(grid-1) };
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |