5 // for X in *.tga; do convert "$X" -geometry 512x512 -depth 8 GRAY:-; done > /tmp/foo
7 // It should output the right parameters for the sun direction in q3map2's format.
8 // But probably is broken.
13 int sides_alphabet[6] =
25 false, false, true, // "rt"
26 true, true, true, // "lf"
27 false, true, false, // "bk"
28 true, false, false, // "ft"
29 false, false, true, // "up"
30 false, false, true // "dn"
33 static const double skyboxvertex3f[6*4*3] =
67 void MapCoord(int pic, int x, int y, double vec[3])
70 int flipx = flip[3*pic+0];
71 int flipy = flip[3*pic+1];
72 int flipdiag = flip[3*pic+2];
74 double a[3] = { skyboxvertex3f[pic*4*3+0*3+0], skyboxvertex3f[pic*4*3+0*3+1], skyboxvertex3f[pic*4*3+0*3+2] };
75 double b[3] = { skyboxvertex3f[pic*4*3+1*3+0], skyboxvertex3f[pic*4*3+1*3+1], skyboxvertex3f[pic*4*3+1*3+2] };
76 double c[3] = { skyboxvertex3f[pic*4*3+2*3+0], skyboxvertex3f[pic*4*3+2*3+1], skyboxvertex3f[pic*4*3+2*3+2] };
77 //double d[3] = { skyboxvertex3f[pic*4*3+3*3+0], skyboxvertex3f[pic*4*3+3*3+1], skyboxvertex3f[pic*4*3+3*3+2] };
94 vec[0] = a[0] + (b[0] - a[0]) * (x + 0.5) / 512.0 + (c[0] - b[0]) * (y + 0.5) / 512.0;
95 vec[1] = a[1] + (b[1] - a[1]) * (x + 0.5) / 512.0 + (c[1] - b[1]) * (y + 0.5) / 512.0;
96 vec[2] = a[2] + (b[2] - a[2]) * (x + 0.5) / 512.0 + (c[2] - b[2]) * (y + 0.5) / 512.0;
99 int main(int argc, char **argv)
103 unsigned char picture[6][512][512];
109 fprintf(stderr, "Usage: %s imagefile.gray\n", *argv);
113 f = fopen(argv[1], "rb");
119 fread(&picture, sizeof(picture), 1, f);
122 brightvec[0] = brightvec[1] = brightvec[2] = 0;
123 for(i = 0; i < 6; ++i)
124 for(j = 0; j < 512; ++j)
125 for(k = 0; k < 512; ++k)
128 MapCoord(i, j, k, vec);
129 f = exp(10 * (picture[i][j][k] - 255)) / sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]);
130 brightvec[0] += f * vec[0];
131 brightvec[1] += f * vec[1];
132 brightvec[2] += f * vec[2];
135 pitch = -atan2(brightvec[2], sqrt(brightvec[0]*brightvec[0] + brightvec[1]*brightvec[1]));
136 yaw = atan2(brightvec[1], brightvec[0]);
138 printf("%f %f\n", yaw * 180 / M_PI, pitch * 180 / M_PI);