ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cal/cal/patch3w.cal
Revision: 1.2
Committed: Wed Nov 21 18:10:45 2018 UTC (5 years, 5 months ago) by greg
Branch: MAIN
CVS Tags: rad5R4, rad5R3, HEAD
Changes since 1.1: +1 -0 lines
Error occurred while calculating annotation data.
Log Message:
Added missing RCSid tag

File Contents

# Content
1 { RCSid $Id$ }
2 {
3 Uniform Rational Patch
4
5 02Mar90
6
7 Define Px(i,j), Py(i,j), Pz(i,j) and W(i,j), nrows, ncols
8 }
9 { default basis functions }
10 br(a,b,c,d,s) = b3(a,b,c,d,s);
11 bc(a,b,c,d,t) = b3(a,b,c,d,t);
12 b3(a,b,c,d,p) = bezier(a,b,c,d,p);
13 { default patch interpolation }
14 rint = interpolate;
15 cint = interpolate;
16 interpolate = 1;
17
18 x(s,t) = patch(s,t,Px);
19 y(s,t) = patch(s,t,Py);
20 z(s,t) = patch(s,t,Pz);
21
22 patch(s,t,p) = bc(P2(s,c0(t)+1,p), P2(s,c0(t)+2,p),
23 P2(s,c0(t)+3,p), P2(s,c0(t)+4,p), cf(t)) /
24 bc(W2(s,c0(t)+1), W2(s,c0(t)+2),
25 W2(s,c0(t)+3), W2(s,c0(t)+4), cf(t)) ;
26
27 P2(s,j,p) = br(W(1+r0(s),j)*p(1+r0(s),j), W(2+r0(s),j)*p(2+r0(s),j),
28 W(3+r0(s),j)*p(3+r0(s),j), W(4+r0(s),j)*p(4+r0(s),j), rf(s)) ;
29
30 W2(s,j) = br(W(1+r0(s),j), W(2+r0(s),j), W(3+r0(s),j), W(4+r0(s),j), rf(s)) ;
31
32 r0(s) = rmult*floor(clamp(s)*npr);
33 rf(s) = s*npr - floor(clamp(s)*npr);
34 c0(t) = cmult*floor(clamp(t)*npc);
35 cf(t) = t*npc - floor(clamp(t)*npc);
36
37 rmult = if(rint, 4, 1);
38 cmult = if(cint, 4, 1);
39 npr = if(rint, nrows/4, nrows-3);
40 npc = if(cint, ncols/4, ncols-3);
41
42 clamp(p) = if(p, if(1-p, p, .9999999), .0000001);