00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include <fcntl.h>
00004 #include <sys/types.h>
00005 #include <sys/stat.h>
00006 #include <unistd.h>
00007 #include <string.h>
00008 #include <errno.h>
00009 #include <math.h>
00010
00011 int main(int, char *[])
00012 {
00013 struct stat statbuff;
00014
00015 int ret;
00016
00017 ret = stat("map.bin", &statbuff);
00018 if(ret == -1) {
00019 printf("Can't stat file map.bin (%s)\n", strerror(errno));
00020 return 0;
00021 }
00022
00023 int sz = statbuff.st_size;
00024 uint *buff = (uint *)malloc(sz);
00025 float *fbuff = (float *)buff;
00026
00027 if(!buff) {
00028 printf("Can't allocate %d bytes\n",sz);
00029 return 0;
00030 }
00031
00032 int fd = open("map.bin", O_RDONLY);
00033 if(fd == -1) {
00034 printf("Can't open file map.bin (%s)\n", strerror(errno));
00035 return 0;
00036 }
00037
00038 ret = read(fd, buff, sz);
00039 if(sz != ret) {
00040 printf("Only read %d of %d bytes\n",ret,sz);
00041 return 0;
00042 }
00043
00044 close(fd);
00045
00046
00047 int head_words = buff[1];
00048
00049 #ifdef PRINTHEAD
00050 for(int i=0;i<head_words;i++) {
00051 printf("Head[%d] = %d (%f)\n",i,buff[i],fbuff[i]);
00052 }
00053 #endif
00054
00055 #ifndef PRINTGRID
00056 float dpad = fbuff[3];
00057 float dtb = fbuff[4];
00058 float maxtb = fbuff[5];
00059
00060 int npgrid = (int) ceil(182./dpad);
00061 int ntbgrid = (int) ceil(maxtb/dtb);
00062
00063 typedef float map_t[45][npgrid+1][ntbgrid+1][3];
00064 map_t *map = (map_t *)&buff[head_words+1];
00065
00066 int sector = 3;
00067 int pr = 20;
00068
00069 for(int pg=0;pg<npgrid;pg++) {
00070 for(int tg=0;tg<ntbgrid;tg++) {
00071 float x = map[sector][pr][pg][tg][0];
00072 float y = map[sector][pr][pg][tg][1];
00073 float z = map[sector][pr][pg][tg][2];
00074
00075 printf("%f %f\n",y,z);
00076 }
00077 }
00078
00079
00080 #endif
00081
00082 free(buff);
00083 }