#WBL 13 Feb 2010 from colour.for #C WBL 30 Jun 2008 # real function blue(x) { # implicit none # real x if(x<=0.53) blue_ = sqrt(x); if(x> 0.53) blue_ = 32.0*((x-0.75)**2)-1.0; blue_ = min(1,max(blue_,0)); return blue_; }# end # real function green(x) { # implicit none # real x green_ = (10.0/3)*(x-0.9)+1; green_ = min(1,max(green_,0)); return green_; }# end # real function red(x,blue,green) { # implicit none # real x,blue,green if(x<0.9) #then red_ = sqrt(3.0)*x-blue; else red_ = green; #endif red_ = min(1,max(red_,0)); return red_; }# end # implicit none # integer i # real threshold, gray,r,g,b # real red, green,blue; END{ # do 10 i=1,50 for(i=1;i<=50;i++) { gray=0.025*(i-5); if(gray<0)gray=0; if(gray>1)gray=1; b=blue(gray); g=green(gray); r=red(gray,b,g); # write(6,2) i,gray,r,g,b # 2 format('i ',i2,' gray ',f4.2,' red green blue ',3f5.2) printf("i %2d gray %4.2f red green blue %5.2f %5.2f %5.2f\n",i,gray,r,g,b); }# 10 continue }# stop # end function min(a,b) {return (ab)? a : b}