--- ray/src/cv/bsdf2rad.c 2017/04/09 21:39:26 2.16 +++ ray/src/cv/bsdf2rad.c 2017/04/09 22:51:19 2.18 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: bsdf2rad.c,v 2.16 2017/04/09 21:39:26 greg Exp $"; +static const char RCSid[] = "$Id: bsdf2rad.c,v 2.18 2017/04/09 22:51:19 greg Exp $"; #endif /* * Plot 3-D BSDF output based on scattering interpolant or XML representation @@ -13,7 +13,7 @@ static const char RCSid[] = "$Id: bsdf2rad.c,v 2.16 20 #include "resolu.h" #include "bsdfrep.h" -#define NINCIDENT 25 /* number of samples/hemisphere */ +#define NINCIDENT 37 /* number of samples/hemisphere */ #define GRIDSTEP 2 /* our grid step size */ #define SAMPRES (GRIDRES/GRIDSTEP) @@ -53,11 +53,10 @@ char *progname; static void get_ivector(FVECT iv, int i) { - const double zstep = 1./(2*NINCIDENT-1); const double phistep = PI*(3. - 2.236067978); double r; - iv[2] = 1. - (i+.5)*zstep; + iv[2] = 1. - (i+.5)*(1./NINCIDENT); r = sqrt(1. - iv[2]*iv[2]); iv[0] = r * cos((i+1.)*phistep); iv[1] = r * sin((i+1.)*phistep); @@ -524,7 +523,7 @@ static void put_source(void) { printf("\n# Overhead parallel light source\n"); - printf("\nvoid light bright\n0\n0\n3 1000 1000 1000\n"); + printf("\nvoid light bright\n0\n0\n3 2000 2000 2000\n"); printf("\nbright source light\n0\n0\n4 0 0 1 2\n"); printf("\n# Material used for labels\n"); printf("\nvoid trans vellum\n0\n0\n7 1 1 1 0 0 .5 0\n"); @@ -544,15 +543,15 @@ put_hemispheres(void) -1.01*sph_rad - sph_xoffset, -1.01*sph_rad, -1.01*sph_rad); printf("\nvoid brighttext front_text\n3 helvet.fnt . FRONT\n0\n"); printf("12\n\t%f %f 0\n\t%f 0 0\n\t0 %f 0\n\t.01 1 -.1\n", - -.22*sph_rad - sph_xoffset, -1.2*sph_rad, + -.22*sph_rad - sph_xoffset, -1.4*sph_rad, .35/5.*sph_rad, -1.6*.35/5.*sph_rad); printf("\nfront_text alias front_label_mat vellum\n"); printf("\nfront_label_mat polygon front_label\n0\n0\n12"); printf("\n\t%f %f 0\n\t%f %f 0\n\t%f %f 0\n\t%f %f 0\n", - -.25*sph_rad - sph_xoffset, -1.1*sph_rad, - -.25*sph_rad - sph_xoffset, (-1.2-1.6*.35/5.-.1)*sph_rad, - .25*sph_rad - sph_xoffset, (-1.2-1.6*.35/5.-.1)*sph_rad, - .25*sph_rad - sph_xoffset, -1.1*sph_rad ); + -.25*sph_rad - sph_xoffset, -1.3*sph_rad, + -.25*sph_rad - sph_xoffset, (-1.4-1.6*.35/5.-.1)*sph_rad, + .25*sph_rad - sph_xoffset, (-1.4-1.6*.35/5.-.1)*sph_rad, + .25*sph_rad - sph_xoffset, -1.3*sph_rad ); } if (back_comp) { printf("\n%s bubble Back\n0\n0\n4 %f 0 0 %f\n", @@ -562,15 +561,15 @@ put_hemispheres(void) -1.01*sph_rad + sph_xoffset, -1.01*sph_rad, -1.01*sph_rad); printf("\nvoid brighttext back_text\n3 helvet.fnt . BACK\n0\n"); printf("12\n\t%f %f 0\n\t%f 0 0\n\t0 %f 0\n\t.01 1 -.1\n", - -.22*sph_rad + sph_xoffset, -1.2*sph_rad, + -.22*sph_rad + sph_xoffset, -1.4*sph_rad, .35/4.*sph_rad, -1.6*.35/4.*sph_rad); printf("\nback_text alias back_label_mat vellum\n"); printf("\nback_label_mat polygon back_label\n0\n0\n12"); printf("\n\t%f %f 0\n\t%f %f 0\n\t%f %f 0\n\t%f %f 0\n", - -.25*sph_rad + sph_xoffset, -1.1*sph_rad, - -.25*sph_rad + sph_xoffset, (-1.2-1.6*.35/4.-.1)*sph_rad, - .25*sph_rad + sph_xoffset, (-1.2-1.6*.35/4.-.1)*sph_rad, - .25*sph_rad + sph_xoffset, -1.1*sph_rad ); + -.25*sph_rad + sph_xoffset, -1.3*sph_rad, + -.25*sph_rad + sph_xoffset, (-1.4-1.6*.35/4.-.1)*sph_rad, + .25*sph_rad + sph_xoffset, (-1.4-1.6*.35/4.-.1)*sph_rad, + .25*sph_rad + sph_xoffset, -1.3*sph_rad ); } } @@ -582,21 +581,21 @@ put_scale(void) const double leg_width = 2.*.75*(sph_xoffset - sph_rad); const double leg_height = 2.*sph_rad; const int text_lines = 6; - const int text_digits = 7; + const int text_digits = 8; char fmt[16]; int i; printf("\n# BSDF legend with falsecolor scale\n"); printf("\nvoid colorfunc lscale\n10 sca_red(Py) sca_grn(Py) sca_blu(Py)"); printf("\n\tbsdf2rad.cal -s %f -t 0 %f 0\n0\n0\n", leg_height, -.5*leg_height); - sprintf(fmt, "%%%dg", text_digits-2); + sprintf(fmt, "%%.%df", text_digits-3); for (i = 0; i < text_lines; i++) { char vbuf[16]; sprintf(vbuf, fmt, pow(10., (i+.5)/text_lines*(max_log10-min_log10)+min_log10)); printf("\nlscale brighttext lscale\n"); printf("3 helvet.fnt . %s\n0\n12\n", vbuf); printf("\t%f %f 0\n", -.45*leg_width, ((i+.9)/text_lines-.5)*leg_height); - printf("\t%f 0 0\n", .9*leg_width/strlen(vbuf)); + printf("\t%f 0 0\n", .8*leg_width/strlen(vbuf)); printf("\t0 %f 0\n", -.9/text_lines*leg_height); printf("\t.01 1 -.1\n"); } @@ -623,7 +622,7 @@ put_scale(void) return; printf("\nvoid brighttext BSDFname\n3 helvet.fnt . \"%s\"\n0\n12\n", bsdf_name); printf("\t%f %f 0\n", -.95*leg_width, -.6*leg_height); - printf("\t%f 0 0\n", .4/strlen(bsdf_name)*leg_width); + printf("\t%f 0 0\n", 1.8/strlen(bsdf_name)*leg_width); printf("\t0 %f 0\n", -.1*leg_height); printf("\t.01 1 -.1\n"); printf("\nBSDFname alias name_mat vellum\n");