#include <stdio.h> // to je bilo napisano 12 ur pred predstavitvijo in NI VARNO
#include <stdlib.h> // datoteka se mora začeti s prvim frameom - prižgana lučka
#include <math.h>
#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);
}
}