#### 3D plot (interactive for X11) gpversion=4.4 flggrid=1 ## No background setting in versions prior to 4.5 if (gpversion<4.5) set term x11 size 720,720 ## For gnuplot 4.5 or later, the background cplor can be specified if (gpversion>=4.5) set term x11 size 720,720 background '#cccccc' load 'parcubehelix.gp' load 'cubehelix.gp' lws=2.0 set style line 1 lt 1 lw 1.00*lws lc rgb '#ff0000' set style line 2 lt 1 lw 1.00*lws lc rgb '#00aa00' set style line 3 lt 1 lw 1.00*lws lc rgb '#0000ff' set style line 4 lt 1 lw 1.00*lws lc rgb '#00aa00' set style line 5 lt 1 lw 1.00*lws lc rgb '#000000' set style line 6 lt 1 lw 1.00*lws lc rgb '#ffffff' set style line 10 lt 1 lw 0.50*lws lc rgb '#000000' set style line 11 lt 1 lw 0.25*lws lc rgb '#444444' set style line 20 lt 1 lw 0.75*lws lc rgb '#000000' set style line 21 lt 1 lw 0.75*lws lc rgb '#ffffff' set border lc rgb '#000000' kzoom=1.2 kscal=1. set xyplane 0 set view equal xyz #set view 0,0,kzoom # view from above set view 55,135,kzoom # view along grey axis (from top to bottom) set xlabel 'red'; set ylabel 'green'; set zlabel 'blue' dtics=0.1;nmtics=2 set xtics dtics; set ytics dtics; set ztics dtics set mxtics nmtics; set mytics nmtics; set mztics nmtics epsw=0.0; rplot=0.5+epsw xmin=0.5-rplot; xmax=0.5+rplot ymin=0.5-rplot; ymax=0.5+rplot zmin=0.5-rplot; zmax=0.5+rplot #### Equal-luma grid #### rpos=0.5 Nmajor=2*int(rplot/dtics+0.000001) Nminor=2*int(nmtics*rplot/dtics+0.000001) rn1=dtics*(Nmajor/2) rn2=dtics*(Nminor/2)/nmtics fn1(x)=rn1*(2./Nmajor*x-1.) fn2(x)=rn2*(2./Nminor*x-1.) fx0(x)=rpos-rplot*u1+fn2(x)*v1;fx1(x)=rpos+rplot*u1+fn2(x)*v1;fx2(x)=rpos+fn2(x)*u1-rplot*v1;fx3(x)=rpos+fn2(x)*u1+rplot*v1 fy0(x)=rpos-rplot*u2+fn2(x)*v2;fy1(x)=rpos+rplot*u2+fn2(x)*v2;fy2(x)=rpos+fn2(x)*u2-rplot*v2;fy3(x)=rpos+fn2(x)*u2+rplot*v2 fz0(x)=rpos-rplot*u3+fn2(x)*v3;fz1(x)=rpos+rplot*u3+fn2(x)*v3;fz2(x)=rpos+fn2(x)*u3-rplot*v3;fz3(x)=rpos+fn2(x)*u3+rplot*v3 gx0(x)=rpos-rplot*u1+fn1(x)*v1;gx1(x)=rpos+rplot*u1+fn1(x)*v1;gx2(x)=rpos+fn1(x)*u1-rplot*v1;gx3(x)=rpos+fn1(x)*u1+rplot*v1 gy0(x)=rpos-rplot*u2+fn1(x)*v2;gy1(x)=rpos+rplot*u2+fn1(x)*v2;gy2(x)=rpos+fn1(x)*u2-rplot*v2;gy3(x)=rpos+fn1(x)*u2+rplot*v2 gz0(x)=rpos-rplot*u3+fn1(x)*v3;gz1(x)=rpos+rplot*u3+fn1(x)*v3;gz2(x)=rpos+fn1(x)*u3-rplot*v3;gz3(x)=rpos+fn1(x)*u3+rplot*v3 #### Minor grid Narr=0 N0=Narr+1; N1=N0+Nminor+1; N2=N1+Nminor+1; N3=N2+Nmajor+1; N4=N3+Nmajor+1 if(flggrid>=2) set for [i=0:Nminor] arrow i+N0 from fx0(i),fy0(i),fz0(i) to fx1(i),fy1(i),fz1(i) ls 11 nohead if(flggrid>=2) set for [i=0:Nminor] arrow i+N1 from fx2(i),fy2(i),fz2(i) to fx3(i),fy3(i),fz3(i) ls 11 nohead #### Major grid if(flggrid>=1) set for [i=0:Nmajor] arrow i+N2 from gx0(i),gy0(i),gz0(i) to gx1(i),gy1(i),gz1(i) ls 10 nohead if(flggrid>=1) set for [i=0:Nmajor] arrow i+N3 from gx2(i),gy2(i),gz2(i) to gx3(i),gy3(i),gz3(i) ls 10 nohead Narr=N4 tiplabel=0.03; tiparrow=0.0 set arrow Narr from rpos-0.5*u1,rpos-0.5*u2,rpos-0.5*u3 to rpos+0.5*u1,rpos+0.5*u2,rpos+0.5*u3 ls 20 set arrow Narr+1 from rpos-0.5*v1,rpos-0.5*v2,rpos-0.5*v3 to rpos+0.5*v1,rpos+0.5*v2,rpos+0.5*v3 ls 20 set arrow Narr+2 from 0.,0.,0. to 1.+tiparrow,1.+tiparrow,1.+tiparrow ls 21 set label Narr 'u' at rpos+(0.5+tiplabel)*u1,rpos+(0.5+tiplabel)*u2,rpos+(0.5+tiplabel)*u3 set label Narr +1 'v' at rpos+(0.5+tiplabel)*v1,rpos+(0.5+tiplabel)*v2,rpos+(0.5+tiplabel)*v3 set label Narr +2 'lum' at 1.+tiplabel,1.+tiplabel,1.+tiplabel print 'Nmajor = ',Nmajor print 'Nminor = ',Nminor print 'N0 = ',N0 print 'N1 = ',N1 print 'N2 = ',N2 print 'N3 = ',N3 print 'N4 = ',N4 #### Ranges definition #### set xrange [xmin:xmax];set yrange [ymin:ymax];set zrange [zmin:zmax] unset key #### Set number of sample points (including start and endpoints) #set samples 4 #almost no resolution (every 85th; otherwise useless) #set samples 16 #very low resolution (every 17th; quick but chunky) #set samples 18 #very low resolution (every 15th; quick but chunky) #set samples 32 #low resolution (quick but slightly chunky) #set samples 64 #medium resolution (fairly quick, good quality) set samples 86 #medium resolution (every 3rd; fairly quick, good quality) #set samples 128 #high resolution (slower on some machines, high quality) #set samples 256 #full resolution (slow, full quality) ## optionally homogenize line color functions #fggg(x)=127*65536 + 127*256 + 127;frgb(x)=127*65536# + 127*256 + 127 rcamp=rdev(rpos) rcirc=rcamp frcirc(x)=rcamp*fuv1(2.*pi*x)+rpos fgcirc(x)=rcamp*fuv2(2.*pi*x)+rpos fbcirc(x)=rcamp*fuv3(2.*pi*x)+rpos fxcirc(x)=rcirc*fuv1(2.*pi*x)+rpos fycirc(x)=rcirc*fuv2(2.*pi*x)+rpos fzcirc(x)=rcirc*fuv3(2.*pi*x)+rpos frgbcirc(x)=int(255*frcirc(x))*65536 + int(255*fgcirc(x))*256 + int(255*fbcirc(x)) if (gpversion<4.5) \ splot '+' using (fgry($1)):(fgry($1)):(fgry($1)) w l ls 5,\ '+' using (fred($1)):(fgrn($1)):(fblu($1)) w l ls 1 if (gpversion>=4.5) \ splot '+' using (fgry($1)):(fgry($1)):(fgry($1)):(fggg($1)) w l lw lws lc rgb variable,\ '+' using (fred($1)):(fgrn($1)):(fblu($1)):(frgb($1)) w l lw lws lc rgb variable,\ '+' using (fxcirc($1)):(fycirc($1)):(fzcirc($1)):(frgbcirc($1)) w l lw lws lc rgb variable