Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/vis12/test/ridge2d-bug.diderot
ViewVC logotype

Annotation of /branches/vis12/test/ridge2d-bug.diderot

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1685 - (view) (download)

1 : jhr 1671 // iso2d
2 :     //
3 :     // Process output with:
4 :     // unu jhisto -i iso2d.txt -b 512 512 -min 0 0 -max 1 1 | unu 2op neq - 0 | unu quantize -b 8 -o iso2d.png
5 :    
6 :     int gridSize = 200;
7 :     field#2(2)[] F = bspln3 ⊛ load("../data/ddro-80.nrrd");
8 :     input int stepsMax = 30;
9 :     real epsilon = 0.0001;
10 :    
11 :     strand sample (int ui, int vi) {
12 :     output vec2 pos = [lerp(0.0, 1.0, -0.5, real(ui), real(gridSize)-0.5),
13 :     lerp(0.0, 1.0, -0.5, real(vi), real(gridSize)-0.5)];
14 :     int steps = 0;
15 :     update {
16 :     /* */
17 :     if (!inside(pos, F) || steps > stepsMax) {
18 :     die;
19 :     }
20 :     /* */
21 :     /*
22 :     if (!inside(pos, F)) {
23 :     die;
24 :     }
25 :     if (steps >= stepsMax) {
26 :     stabilize;
27 :     }
28 :     */
29 :     vec2 grad = ∇F(pos);
30 :     real gmag = |grad|;
31 :     if (gmag == 0.0) { // can't compute step if |∇F|, so have to bail
32 :     die;
33 :     }
34 :     vec2 norm = normalize(grad);
35 :     tensor[2,2] hess = ∇⊗∇F(pos);
36 :     real{2} eval = evals(hess);
37 :     vec2{2} evec = evecs(hess);
38 :     real fdd = grad•evec{1};
39 :     real sdd = evec{1}•hess•evec{1};
40 :     vec2 delta = (0.001 if sdd >= 0.0 else -fdd/sdd)*evec{1};
41 :     if (|delta| < epsilon) { // we've converged if step is small enough
42 :     if (eval{1} < -10000.0) {
43 :     stabilize;
44 :     } else {
45 :     die;
46 :     }
47 :     }
48 :     pos += delta;
49 :     steps += 1;
50 :     }
51 :     }
52 :    
53 :     initially { sample(ui, vi) | vi in 0..(gridSize-1), ui in 0..(gridSize-1) };
54 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0