#include // to je bilo napisano 12 ur pred predstavitvijo in NI VARNO #include // datoteka se mora začeti s prvim frameom - prižgana lučka #include #define STR0(x) (x ? x : "") int main (int argc, char ** argv) { long double kalibracijske_vrednosti[] = { 14.20, -2.35, 2.25 }; if (argc < 1+1+7) { fprintf(stderr, "%s timestamps.txt `grep \"2A1 \" podatki.tsv`\n", STR0(argv[0])); return 1; } #define TIMESTAMPS argv[1] char * cp; int merilo_leva_šir = strtol(argv[5], &cp, 10); cp++; int merilo_leva_viš = strtol(cp, NULL, 10); int merilo_desna_šir = strtol(argv[6], &cp, 10); cp++; int merilo_desna_viš = strtol(cp, NULL, 10); int središče_šir = strtol(argv[7], &cp, 10); cp++; int središče_viš = strtol(cp, NULL, 10); int kotna_točka_šir = strtol(argv[8], &cp, 10); cp++; int kotna_točka_viš = strtol(cp, NULL, 10); long double pikslov_v_1m = 10*sqrtl(powl(labs(merilo_leva_šir-merilo_desna_šir), 2)+powl(labs(merilo_leva_viš-merilo_desna_viš), 2)); fprintf(stderr, "pikslov v 1m je %Lf\n", pikslov_v_1m); char buf[512]; fgets(buf, 512, stdin); int i = 0; unsigned long int starting_frame; unsigned int starting_milliseconds; FILE * timestamps = fopen(TIMESTAMPS, "r"); while (!feof(stdin) && !ferror(stdin)) { unsigned long int frame = strtoul(buf, &cp, 10); if (!i++) { starting_frame = frame; char starting_millis[512]; rewind(timestamps); for (unsigned int j = 0; j <= frame+1; j++) fgets(starting_millis, 512, timestamps); starting_milliseconds = strtoul(starting_millis, NULL, 10); } cp++; long double piksel_šir = strtold(cp, &cp); cp++; long double piksel_viš = strtold(cp, NULL); piksel_šir -= središče_šir; piksel_viš -= središče_viš; piksel_viš /= pikslov_v_1m; piksel_šir /= pikslov_v_1m; rewind(timestamps); char millis[512]; for (unsigned int j = 0; j <= frame+1; j++) fgets(millis, 512, timestamps); unsigned int milliseconds = strtoul(millis, NULL, 10); fprintf(stdout, "%lu\t%u\t%Lf\t%Lf\n", frame - starting_frame, milliseconds - starting_milliseconds, piksel_šir, piksel_viš); fgets(buf, 512, stdin); } }