4 // USAGE: see brightspot.sh (and in the future brightspot.bat)
5 // It should output the right parameters for the sun direction in q3map2's format.
6 // But probably is broken.
13 false, false, true, // "rt"
14 true, true, true, // "lf"
15 false, true, false, // "bk"
16 true, false, false, // "ft"
17 false, false, true, // "up"
18 false, false, true // "dn"
21 static const double skyboxvertex3f[6*4*3] =
55 void MapCoord(int pic, int x, int y, double vec[3])
58 int flipx = flip[3*pic+0];
59 int flipy = flip[3*pic+1];
60 int flipdiag = flip[3*pic+2];
62 double a[3] = { skyboxvertex3f[pic*4*3+0*3+0], skyboxvertex3f[pic*4*3+0*3+1], skyboxvertex3f[pic*4*3+0*3+2] };
63 double b[3] = { skyboxvertex3f[pic*4*3+1*3+0], skyboxvertex3f[pic*4*3+1*3+1], skyboxvertex3f[pic*4*3+1*3+2] };
64 double c[3] = { skyboxvertex3f[pic*4*3+2*3+0], skyboxvertex3f[pic*4*3+2*3+1], skyboxvertex3f[pic*4*3+2*3+2] };
65 //double d[3] = { skyboxvertex3f[pic*4*3+3*3+0], skyboxvertex3f[pic*4*3+3*3+1], skyboxvertex3f[pic*4*3+3*3+2] };
82 vec[0] = a[0] + (b[0] - a[0]) * (x + 0.5) / 512.0 + (c[0] - b[0]) * (y + 0.5) / 512.0;
83 vec[1] = a[1] + (b[1] - a[1]) * (x + 0.5) / 512.0 + (c[1] - b[1]) * (y + 0.5) / 512.0;
84 vec[2] = a[2] + (b[2] - a[2]) * (x + 0.5) / 512.0 + (c[2] - b[2]) * (y + 0.5) / 512.0;
87 int main(int argc, char **argv)
91 unsigned char picture[6][512][512];
97 fprintf(stderr, "Usage: %s imagefile.gray\n", *argv);
101 f = fopen(argv[1], "rb");
107 fread(&picture, sizeof(picture), 1, f);
110 brightvec[0] = brightvec[1] = brightvec[2] = 0;
111 for(i = 0; i < 6; ++i)
112 for(j = 0; j < 512; ++j)
113 for(k = 0; k < 512; ++k)
116 MapCoord(i, j, k, vec);
117 f = exp(10 * (picture[i][j][k] - 255)) / sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]);
118 brightvec[0] += f * vec[0];
119 brightvec[1] += f * vec[1];
120 brightvec[2] += f * vec[2];
123 pitch = -atan2(brightvec[2], sqrt(brightvec[0]*brightvec[0] + brightvec[1]*brightvec[1]));
124 yaw = atan2(brightvec[1], brightvec[0]);
126 printf("%f %f\n", yaw * 180 / M_PI, pitch * 180 / M_PI);