158 lines
4.7 KiB
C
158 lines
4.7 KiB
C
/* $Id: maps.c 11578 2009-02-23 22:02:27Z lalo $ */
|
|
|
|
/* This program will generate ppm files from each of the weathermaps.
|
|
Mostly for debugging, but curious DM's might find it useful to see
|
|
the weather.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#ifndef MIN
|
|
#define MIN(x, y) ((x) < (y) ? (x) : (y))
|
|
#endif
|
|
#ifndef MAX
|
|
#define MAX(x, y) ((x) > (y) ? (x) : (y))
|
|
#endif
|
|
|
|
int main(void) {
|
|
int map[100][100];
|
|
int x, y;
|
|
int n, i, j, k, l, z, w, r, a;
|
|
FILE *fp, *lp;
|
|
int junk;
|
|
char fn[6];
|
|
|
|
sprintf(fn, "winddirmap");
|
|
lp = fopen(fn, "r");
|
|
fp = fopen("winddirmap.ppm", "w");
|
|
fprintf(fp, "P3 %d %d 255\n", 100, 100);
|
|
for (j = 0; j < 100; j++) {
|
|
for (k = 0; k < 100; k++) {
|
|
fscanf(lp, "%d ", &map[j][k]);
|
|
junk = map[j][k];
|
|
fprintf(lp, "%d ", map[j][k]);
|
|
switch (junk) {
|
|
case 0: fprintf(fp, "255 255 255 "); break;
|
|
case 1: fprintf(fp, "0 0 0 "); break;
|
|
case 2: fprintf(fp, "0 0 127 "); break;
|
|
case 3: fprintf(fp, "0 0 255 "); break;
|
|
case 4: fprintf(fp, "127 127 255 "); break;
|
|
case 5: fprintf(fp, "127 127 127 "); break;
|
|
case 6: fprintf(fp, "127 255 127 "); break;
|
|
case 7: fprintf(fp, "0 255 0 "); break;
|
|
case 8: fprintf(fp, "0 127 0 "); break;
|
|
}
|
|
fprintf(fp, "\n");
|
|
fscanf(lp, "\n");
|
|
}
|
|
}
|
|
fclose(fp);
|
|
fclose(lp);
|
|
|
|
sprintf(fn, "pressuremap");
|
|
lp = fopen(fn, "r");
|
|
fp = fopen("pressuremap.ppm", "w");
|
|
fprintf(fp, "P3 %d %d 255\n", 100, 100);
|
|
for (j = 0; j < 100; j++) {
|
|
for (k = 0; k < 100; k++) {
|
|
fscanf(lp, "%d ", &map[j][k]);
|
|
junk = map[j][k];
|
|
fprintf(lp, "%d ", map[j][k]);
|
|
if (junk < 1000)
|
|
fprintf(fp, "0 0 %d ", 255-(1000-junk)*3);
|
|
else
|
|
fprintf(fp, "0 %d 0 ", 255+(1000-junk)*3);
|
|
fprintf(fp, "\n");
|
|
fscanf(lp, "\n");
|
|
}
|
|
}
|
|
fclose(fp);
|
|
fclose(lp);
|
|
|
|
sprintf(fn, "windspeedmap");
|
|
lp = fopen(fn, "r");
|
|
fp = fopen("windspeedmap.ppm", "w");
|
|
fprintf(fp, "P3 %d %d 255\n", 100, 100);
|
|
for (j = 0; j < 100; j++) {
|
|
for (k = 0; k < 100; k++) {
|
|
fscanf(lp, "%d ", &map[j][k]);
|
|
junk = map[j][k];
|
|
fprintf(lp, "%d ", map[j][k]);
|
|
fprintf(fp, "0 %d 0 ", junk*5);
|
|
fprintf(fp, "\n");
|
|
fscanf(lp, "\n");
|
|
}
|
|
}
|
|
fclose(fp);
|
|
fclose(lp);
|
|
|
|
sprintf(fn, "humidmap");
|
|
lp = fopen(fn, "r");
|
|
fp = fopen("humidmap.ppm", "w");
|
|
fprintf(fp, "P3 %d %d 255\n", 100, 100);
|
|
for (j = 0; j < 100; j++) {
|
|
for (k = 0; k < 100; k++) {
|
|
fscanf(lp, "%d ", &map[j][k]);
|
|
junk = map[j][k];
|
|
fprintf(lp, "%d ", map[j][k]);
|
|
fprintf(fp, "0 0 %d ", 255-(junk*2));
|
|
fprintf(fp, "\n");
|
|
fscanf(lp, "\n");
|
|
}
|
|
}
|
|
fclose(fp);
|
|
fclose(lp);
|
|
|
|
sprintf(fn, "temperaturemap");
|
|
lp = fopen(fn, "r");
|
|
fp = fopen("temperaturemap.ppm", "w");
|
|
fprintf(fp, "P3 %d %d 255\n", 100, 100);
|
|
for (j = 0; j < 100; j++) {
|
|
for (k = 0; k < 100; k++) {
|
|
fscanf(lp, "%d ", &map[j][k]);
|
|
junk = map[j][k];
|
|
fprintf(lp, "%d ", map[j][k]);
|
|
if (junk < 0)
|
|
fprintf(fp, "0 0 %d ", 255+junk*5);
|
|
else
|
|
fprintf(fp, "0 %d 0 ", junk*5);
|
|
fprintf(fp, "\n");
|
|
fscanf(lp, "\n");
|
|
}
|
|
}
|
|
fclose(fp);
|
|
fclose(lp);
|
|
|
|
sprintf(fn, "skymap");
|
|
lp = fopen(fn, "r");
|
|
if (lp == NULL)
|
|
exit(0);
|
|
fp = fopen("skymap.ppm", "w");
|
|
fprintf(fp, "P3 %d %d 255\n", 100, 100);
|
|
for (j = 0; j < 100; j++) {
|
|
for (k = 0; k < 100; k++) {
|
|
fscanf(lp, "%d ", &map[j][k]);
|
|
junk = map[j][k];
|
|
fprintf(lp, "%d ", map[j][k]);
|
|
switch (junk) {
|
|
case 0: fprintf(fp, "0 0 255 "); break;
|
|
case 1: fprintf(fp, "230 230 230 "); break;
|
|
case 2: fprintf(fp, "170 170 170 "); break;
|
|
case 3: fprintf(fp, "120 120 120 "); break;
|
|
case 4: fprintf(fp, "80 80 80 "); break;
|
|
case 5: fprintf(fp, "40 40 40 "); break;
|
|
case 6: fprintf(fp, "10 10 10 "); break;
|
|
case 7: fprintf(fp, "0 255 0 "); break;
|
|
case 8: fprintf(fp, "255 0 0 "); break;
|
|
case 13: fprintf(fp, "230 230 255 "); break;
|
|
case 14: fprintf(fp, "170 170 255 "); break;
|
|
case 15: fprintf(fp, "120 120 255 "); break;
|
|
case 16: fprintf(fp, "80 80 255 "); break;
|
|
}
|
|
fprintf(fp, "\n");
|
|
fscanf(lp, "\n");
|
|
}
|
|
}
|
|
fclose(fp);
|
|
fclose(lp);
|
|
}
|