#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 : "") #define ŠIR 3840 // moramo vedeti, da GIMP koordinate pretvorimo v blender koo #define VIŠ 2160 // nisem prepričan. če se ti zdi, da je to nepotrebno => mail 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š = VIŠ-strtol(cp, NULL, 10); int merilo_desna_šir = strtol(argv[6], &cp, 10); cp++; int merilo_desna_viš = VIŠ-strtol(cp, NULL, 10); int središče_šir = strtol(argv[7], &cp, 10); cp++; int središče_viš = VIŠ-strtol(cp, NULL, 10); int kotna_točka_šir = strtol(argv[8], &cp, 10); cp++; int kotna_točka_viš = 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)); long double kot = atan2l(kotna_točka_viš - središče_viš, kotna_točka_šir - središče_šir); fprintf(stderr, "pikslov v 1m je %Lf\tkot je %Lf rad\n", pikslov_v_1m, kot); 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); long double točka_šir_ro = piksel_šir*cosl(kot)-piksel_viš*sinl(kot); long double točka_viš_ro = piksel_šir*sinl(kot)+piksel_viš*cosl(kot); fprintf(stdout, "%lu\t%u\t%Lf\t%Lf\n", frame - starting_frame, milliseconds - starting_milliseconds, točka_šir_ro, točka_viš_ro); fgets(buf, 512, stdin); } }