--- ray/src/common/disk2square.c 2011/02/18 00:40:25 3.1 +++ ray/src/common/disk2square.c 2021/12/15 01:39:52 3.6 @@ -1,3 +1,6 @@ +#ifndef lint +static const char RCSid[] = "$Id: disk2square.c,v 3.6 2021/12/15 01:39:52 greg Exp $"; +#endif /* * Disk2Square.c * @@ -8,7 +11,9 @@ * Modified interface slightly (G. Ward) */ +#define _USE_MATH_DEFINES #include +#include "fvect.h" /* This transforms points on [0,1]^2 to points on unit disk centered at @@ -36,7 +41,7 @@ change log: /* Map a [0,1]^2 square to a unit radius disk */ void -SDsquare2disk(double ds[2], double seedx, double seedy) +square2disk(RREAL ds[2], double seedx, double seedy) { double phi, r; @@ -66,7 +71,7 @@ SDsquare2disk(double ds[2], double seedx, double seedy phi = 0.; } } - + r *= 0.9999999999999; /* prophylactic against MS sin()/cos() impl. */ ds[0] = r * cos(phi); ds[1] = r * sin(phi); @@ -74,7 +79,7 @@ SDsquare2disk(double ds[2], double seedx, double seedy /* Map point on unit disk to a unit square in [0,1]^2 range */ void -SDdisk2square(double sq[2], double diskx, double disky) +disk2square(RREAL sq[2], double diskx, double disky) { double r = sqrt( diskx*diskx + disky*disky ); double phi = atan2( disky, diskx ); @@ -98,6 +103,6 @@ SDdisk2square(double sq[2], double diskx, double disky a = -(phi - 3*M_PI/2) * b / (M_PI/4); } - sq[0] = (a + 1) * 0.5; - sq[1] = (b + 1) * 0.5; + sq[0] = a*(0.5/0.9999999999999) + 0.5; + sq[1] = b*(0.5/0.9999999999999) + 0.5; }