From 0ae2acadcf667fcd3d2cfc76aad9a7a754cb0f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Mon, 17 Jan 2022 14:05:05 +0100 Subject: add lots of images for a new cover --- buch/chapters/090-pde/membran/membran.m | 109 ++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 buch/chapters/090-pde/membran/membran.m (limited to 'buch/chapters/090-pde/membran/membran.m') diff --git a/buch/chapters/090-pde/membran/membran.m b/buch/chapters/090-pde/membran/membran.m new file mode 100644 index 0000000..acc45b9 --- /dev/null +++ b/buch/chapters/090-pde/membran/membran.m @@ -0,0 +1,109 @@ +# +# membran.m +# +# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +global n; +n = 3; +global A; +A = 0.2; +global nullstelle; +nullstelle = 13.0152; +global skala; +skala = 1 / nullstelle; +phisteps = 628; +phistep = 2 * pi / phisteps; +rsteps = 200; +rstep = 1 / rsteps; + +fn = fopen("membran.inc", "w"); +fprintf(fn, "#macro flaeche()\n"); + +function retval = punkt(fn, phi, r, n) + global nullstelle; + global skala; + global A; + fprintf(fn, "\n\t <%.4f, %.4f, %.4f>", + r * cos(phi), + A * besselj(n, nullstelle * r) * cos(n * phi), + r * sin(phi) + ); +endfunction + +for i = (0:phisteps) + phi = i * phistep; + r = rstep; + fprintf(fn, "\ttriangle {"); + punkt(fn, 0, 0, n); fprintf(fn, ","); + punkt(fn, phi, rstep, n); fprintf(fn, ","); + punkt(fn, phi+phistep, rstep, n); + fprintf(fn, "\n\t}\n"); + + for j = (1:rsteps-1) + r = j * rstep; + fprintf(fn, "\ttriangle {"); + punkt(fn, phi, r, n); fprintf(fn, ","); + punkt(fn, phi+phistep, r, n); fprintf(fn, ","); + punkt(fn, phi+phistep, r+rstep, n); + fprintf(fn, "\n\t}\n"); + fprintf(fn, "\ttriangle {"); + punkt(fn, phi, r, n); fprintf(fn, ","); + punkt(fn, phi+phistep, r+rstep, n); fprintf(fn, ","); + punkt(fn, phi, r+rstep, n); + fprintf(fn, "\n\t}\n"); + end +end + +fprintf(fn, "#end\n"); + +function retval = ring(fn, r, n) + phisteps = 100; + phistep = 2 * pi / phisteps; + for i = (1:phisteps) + phi = phistep * i; + fprintf(fn, "\tcylinder {"); + punkt(fn, phi - phistep, r, n); fprintf(fn, ","); + punkt(fn, phi, r, n); fprintf(fn, ","); + fprintf(fn, "\n\t r"); + fprintf(fn, "\n\t}\n") + fprintf(fn, "\tsphere {"); + punkt(fn, phi - phistep, r, n); fprintf(fn, ","); + fprintf(fn, "\n\t r"); + fprintf(fn, "\n\t}\n") + end +end + +function retval = radius(fn, phi, n) + rsteps = 100; + rstep = 1 / rsteps; + for i = (0:rsteps-1) + r = i * rstep; + fprintf(fn, "\tcylinder {"); + punkt(fn, phi, r, n); fprintf(fn, ","); + punkt(fn, phi, r+rstep, n); fprintf(fn, ","); + fprintf(fn, "\n\t r"); + fprintf(fn, "\n\t}\n") + fprintf(fn, "\tsphere {"); + punkt(fn, phi, r, n); fprintf(fn, ","); + fprintf(fn, "\n\t r"); + fprintf(fn, "\n\t}\n") + end +end + +fprintf(fn, "#macro phigitter()\n"); +rsteps = 20; +rstep = 1 / rsteps; +for j = (1:rsteps-1) + ring(fn, rstep * j, n); +end +fprintf(fn, "#end\n"); + +fprintf(fn, "#macro rgitter()\n"); +phisteps = 72; +phistep = 2 * pi / phisteps; +for i = (0:phisteps-1) + radius(fn, phistep * i, n); +end +fprintf(fn, "#end\n"); + +fclose(fn); -- cgit v1.2.1