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

SCM Repository

[diderot] Annotation of /branches/pure-cfg/test/zslice-k1k2.diderot
ViewVC logotype

Annotation of /branches/pure-cfg/test/zslice-k1k2.diderot

Parent Directory Parent Directory | Revision Log Revision Log


Revision 910 - (view) (download)

1 : glk 866
2 :     // quad-k1k2: demo of curvature calculation on quad patch dataset
3 : glk 884 // to process output:
4 :     // unu reshape -i mip.txt -s 3 200 200 | unu quantize -b 8 -o zslice-k1k2.png
5 :     //
6 : glk 866
7 :     int imgRes = 200;
8 :     int dataRes = 110;
9 :     vec3 orig = [0.0, 0.0, 10.0];
10 :     vec3 uVec = [1.0, 0.0, 0.0];
11 :     vec3 vVec = [0.0, 1.0, 0.0];
12 :     image(3)[] vol = load("../data/quad-patches-pad.nrrd");
13 :     field#2(3)[] F = vol ⊛ bspln3;
14 : glk 910 image(2)[3] imgRGB = load("../data/hue.nhdr");
15 :     field#0(2)[3] RGB = imgRGB ⊛ tent;
16 : glk 866
17 : glk 910 strand sample (int ui, int vi)
18 : glk 866 {
19 :     real uu = lerp(-0.5, real(dataRes)-0.5, -0.5, real(ui), real(imgRes)-0.5);
20 :     real vv = lerp(-0.5, real(dataRes)-0.5, -0.5, real(vi), real(imgRes)-0.5);
21 :     output vec3 rgb = [0.0,0.0,0.0];
22 :    
23 :     update
24 :     {
25 :     vec3 pos = orig + uu*uVec + vv*vVec;
26 :     if (inside (pos,F)) {
27 : glk 910 vec3 g = -∇F(pos);
28 : glk 884 // the "if (g[2] > 0.10)" test is specific to this dataset;
29 : glk 910 // it is true when within one of the quadratic patches
30 : glk 884 if (g[2] > 0.10) {
31 : glk 866 vec3 n = normalize(g);
32 : glk 910 tensor[3,3] H = -∇(∇F)(pos);
33 : glk 866 tensor[3,3] P = identity[3] - n⊗n;
34 :     tensor[3,3] G = (P•H•P)/|g|;
35 :     real disc = max(0.0, sqrt(2.0*|G|^2 - trace(G)^2));
36 :     real k1 = (trace(G) + disc)/2.0;
37 :     real k2 = (trace(G) - disc)/2.0;
38 :     // correct curvature computation ends here
39 : glk 910 k1 = max(-1.0, min(1.0, 4.2*k1));
40 :     k2 = max(-1.0, min(1.0, 4.2*k2));
41 :     rgb = RGB([k1,k2]) if inside([k1,k2],RGB) else [0.0,0.0,0.0];
42 : glk 866 }
43 :     }
44 :     stabilize;
45 :     }
46 :     }
47 :    
48 : glk 910 initially [ sample(ui, vi) | vi in 0..(imgRes-1), ui in 0..(imgRes-1) ];

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