summaryrefslogtreecommitdiffstats
path: root/fiz/naloga/numerično.c
diff options
context:
space:
mode:
Diffstat (limited to 'fiz/naloga/numerično.c')
-rw-r--r--fiz/naloga/numerično.c63
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);