diff options
Diffstat (limited to 'fiz/naloga/numerično.c')
-rw-r--r-- | fiz/naloga/numerično.c | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/fiz/naloga/numerično.c b/fiz/naloga/numerično.c index c1ca08c..9ef948b 100644 --- a/fiz/naloga/numerično.c +++ b/fiz/naloga/numerično.c @@ -35,7 +35,11 @@ "način izdelave animacije: podan naj bo samo en argument - animacija - TOLE NE DELA\n" \ " - delajo se datoteke animacija0000.ppm, animacija0001.ppm, ...\n" \ " - parametri se sinusoidno spreminjajo po vdelanih konstantah.\n" \ - " - slike lahko recimo s ffmpeg(1) nato pretvorite v videoposnetek." + " - slike lahko recimo s ffmpeg(1) nato pretvorite v videoposnetek\n" \ + "DODATEK :: izračun za eno točko:\n" \ + " - 1. argument je 'enkrat', 2. R, 3. x, 4. y, 5. kotov \n" \ + " - x in y koordinati sta v metrih. program izpiše eno vrstico\n" \ + " - v vrstici so i, j in k komponente polja in absolutna vrednost.\n" enum oblika { PGM, PPM, @@ -208,6 +212,8 @@ void handler (int s __attribute__((unused))) { int main (int argc, char ** argv) { if (argv[1] && !strcmp(argv[1], "animacija")) goto animacija; + if (argv[1] && !strcmp(argv[1], "enkrat")) + goto enkrat; if (argc < 8) error(1, 0, UVOD, argv[0] ? argv[0] : "./numerično"); long double R = strtold(argv[1], NULL); @@ -251,6 +257,61 @@ int main (int argc, char ** argv) { if (oblika != ANIMACIJA) return nariši(R, I, n, razmak, koliko, kotov, oblika, med_tuljavama, zamik_izven_osi, R2, I2, stdout); +enkrat: + if (argc != 6) { + fprintf(stderr, "preveri vnos!\n"); + return 59; + } + long double radij = strtold(argv[2], NULL); + long double x = strtold(argv[3], NULL); + long double y = strtold(argv[4], NULL); + unsigned število_kotov = strtol(argv[5], NULL, 10); + struct vektor Rpolovic = { + .i = radij/2, + .j = 0, + .k = 0 + }; + struct vektor merilno_mesto = { // krajevni vektor + .i = x, + .j = y, + .k = 0 + }; + struct vektor B = + seštej( + množi( + množi( + tuljava( + radij, + število_kotov, + seštej( + merilno_mesto, + Rpolovic + ) + ), + 1 + ), + 1 + ), + množi( + množi( + tuljava( + radij, + število_kotov, + seštej( + merilno_mesto, + množi( + Rpolovic, + -1 + ) + ) + ), + 1 + ), + 1 + ) + ); + printf("%Lf\t%Lf\t%Lf\t%Lf", B.i, B.j, B.k, absolutno(B)); + return 0; animacija: signal(SIGTERM, handler); signal(SIGINT, handler); |