diff options
author | Andreas Müller <andreas.mueller@othello.ch> | 2022-06-15 20:27:07 +0200 |
---|---|---|
committer | Andreas Müller <andreas.mueller@othello.ch> | 2022-06-15 20:27:07 +0200 |
commit | d3156feab3dabfa65782f8b3e63d5d0331eaa715 (patch) | |
tree | bf43dfb50e5874e6b0bd083d71c77171517554a6 /buch/chapters/110-elliptisch/images | |
parent | Merge branch 'master' of github.com:AndreasFMueller/SeminarSpezielleFunktionen (diff) | |
parent | fix some minor issues (diff) | |
download | SeminarSpezielleFunktionen-d3156feab3dabfa65782f8b3e63d5d0331eaa715.tar.gz SeminarSpezielleFunktionen-d3156feab3dabfa65782f8b3e63d5d0331eaa715.zip |
Merge branch 'master' of github.com:AndreasFMueller/SeminarSpezielleFunktionen
Diffstat (limited to '')
-rw-r--r-- | buch/chapters/110-elliptisch/images/Makefile | 26 | ||||
-rw-r--r-- | buch/chapters/110-elliptisch/images/jacobiplots.pdf | bin | 56975 -> 56975 bytes | |||
-rw-r--r-- | buch/chapters/110-elliptisch/images/kegelpara.pdf | bin | 0 -> 202828 bytes | |||
-rw-r--r-- | buch/chapters/110-elliptisch/images/kegelpara.pov | 329 | ||||
-rw-r--r-- | buch/chapters/110-elliptisch/images/kegelpara.tex | 41 | ||||
-rw-r--r-- | buch/chapters/110-elliptisch/images/torusschnitt.pdf | bin | 0 -> 301677 bytes | |||
-rw-r--r-- | buch/chapters/110-elliptisch/images/torusschnitt.pov | 265 | ||||
-rw-r--r-- | buch/chapters/110-elliptisch/images/torusschnitt.tex | 41 |
8 files changed, 701 insertions, 1 deletions
diff --git a/buch/chapters/110-elliptisch/images/Makefile b/buch/chapters/110-elliptisch/images/Makefile index a7c9e74..c8f98cb 100644 --- a/buch/chapters/110-elliptisch/images/Makefile +++ b/buch/chapters/110-elliptisch/images/Makefile @@ -5,7 +5,7 @@ # all: lemniskate.pdf ellipsenumfang.pdf unvollstaendig.pdf rechteck.pdf \ ellipse.pdf pendel.pdf jacobiplots.pdf jacobidef.pdf jacobi12.pdf \ - sncnlimit.pdf slcl.pdf + sncnlimit.pdf slcl.pdf torusschnitt.pdf kegelpara.pdf lemniskate.pdf: lemniskate.tex pdflatex lemniskate.tex @@ -78,3 +78,27 @@ slcldata.tex: slcl ./slcl --outfile=slcldata.tex --a=0 --b=13.4 --steps=200 slcl.pdf: slcl.tex slcldata.tex pdflatex slcl.tex + +KEGELSIZE = -W256 -H256 +KEGELSIZE = -W128 -H128 +KEGELSIZE = -W1080 -H1080 +kegelpara.png: kegelpara.pov + povray +A0.1 $(KEGELSIZE) -Okegelpara.png kegelpara.pov + +kegelpara.jpg: kegelpara.png Makefile + convert -extract 1080x1040+0+0 kegelpara.png \ + -density 300 -units PixelsPerInch kegelpara.jpg + +kegelpara.pdf: kegelpara.tex kegelpara.jpg + pdflatex kegelpara.tex + +torusschnitt.png: torusschnitt.pov + povray +A0.1 -W1920 -H1080 -Otorusschnitt.png torusschnitt.pov + +torusschnitt.jpg: torusschnitt.png Makefile + convert -extract 1560x1080+180+0 torusschnitt.png \ + -density 300 -units PixelsPerInch torusschnitt.jpg + +torusschnitt.pdf: torusschnitt.tex torusschnitt.jpg + pdflatex torusschnitt.tex + diff --git a/buch/chapters/110-elliptisch/images/jacobiplots.pdf b/buch/chapters/110-elliptisch/images/jacobiplots.pdf Binary files differindex f0e6e78..c11affc 100644 --- a/buch/chapters/110-elliptisch/images/jacobiplots.pdf +++ b/buch/chapters/110-elliptisch/images/jacobiplots.pdf diff --git a/buch/chapters/110-elliptisch/images/kegelpara.pdf b/buch/chapters/110-elliptisch/images/kegelpara.pdf Binary files differnew file mode 100644 index 0000000..2f76593 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/kegelpara.pdf diff --git a/buch/chapters/110-elliptisch/images/kegelpara.pov b/buch/chapters/110-elliptisch/images/kegelpara.pov new file mode 100644 index 0000000..13b66cc --- /dev/null +++ b/buch/chapters/110-elliptisch/images/kegelpara.pov @@ -0,0 +1,329 @@ +// +// kegelpara.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" + +#declare O = <0,0,0>; + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.08; + +camera { + location <28, 20, -40> + look_at <0, 0.1, 0> + right x * imagescale + up y * imagescale +} + +light_source { + <30, 10, -40> color White + area_light <1,0,0> <0,0,1>, 10, 10 + adaptive 1 + jitter +} + +sky_sphere { + pigment { + color rgb<1,1,1> + } +} + + +// +// draw an arrow from <from> to <to> with thickness <arrowthickness> with +// color <c> +// +#macro arrow(from, to, arrowthickness, c) +#declare arrowdirection = vnormalize(to - from); +#declare arrowlength = vlength(to - from); +union { + sphere { + from, 1.1 * arrowthickness + } + cylinder { + from, + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + arrowthickness + } + cone { + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + 2 * arrowthickness, + to, + 0 + } + pigment { + color c + } + finish { + specular 0.9 + metallic + } +} +#end + +arrow(<-2.6,0,0>,<2.5,0,0>,0.02,White) +arrow(<0,-2,0>,<0,2.3,0>,0.02,White) +arrow(<0,0,-3.2>,<0,0,3.7>,0.02,White) + +#declare epsilon = 0.0001; +#declare l = 1.5; + +#macro Kegel(farbe) +union { + difference { + cone { O, 0, <l, 0, 0>, l } + cone { O + <epsilon, 0,0>, 0, <l+epsilon, 0, 0>, l } + } + difference { + cone { O, 0, <-l, 0, 0>, l } + cone { O + <-epsilon, 0, 0>, 0, <-l-epsilon, 0, 0>, l } + } + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Kegelpunkt(xx, phi) + < xx, xx * sin(phi), xx * cos(phi) > +#end + +#macro Kegelgitter(farbe, r) +union { + #declare s = 0; + #declare smax = 2 * pi; + #declare sstep = pi / 6; + #while (s < smax - sstep/2) + cylinder { Kegelpunkt(l, s), Kegelpunkt(-l, s), r } + #declare s = s + sstep; + #end + #declare phimax = 2 * pi; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #declare xxstep = 0.5; + #declare xxmax = 2; + #declare xx = xxstep; + #while (xx < xxmax - xxstep/2) + #declare phi = 0; + #while (phi < phimax - phistep/2) + cylinder { + Kegelpunkt(xx, phi), + Kegelpunkt(xx, phi + phistep), + r + } + sphere { Kegelpunkt(xx, phi), r } + cylinder { + Kegelpunkt(-xx, phi), + Kegelpunkt(-xx, phi + phistep), + r + } + sphere { Kegelpunkt(-xx, phi), r } + #declare phi = phi + phistep; + #end + #declare xx = xx + xxstep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro F(w, r) + <r * cos(w), r * r/sqrt(2), r * sin(w) > +#end + +#macro Paraboloid(farbe) +mesh { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phisteps = 100; + #declare phistep = pi / phisteps; + #declare rsteps = 100; + #declare rmax = 1.5; + #declare rstep = rmax / rsteps; + #while (phi < phimax - phistep/2) + #declare r = rstep; + #declare h = r * r / sqrt(2); + triangle { + O, F(phi, r), F(phi + phistep, r) + } + #while (r < rmax - rstep/2) + // ring + triangle { + F(phi, r), + F(phi + phistep, r), + F(phi + phistep, r + rstep) + } + triangle { + F(phi, r), + F(phi + phistep, r + rstep), + F(phi, r + rstep) + } + #declare r = r + rstep; + #end + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Paraboloidgitter(farbe, gr) +union { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phistep = pi / 6; + + #declare rmax = 1.5; + #declare rsteps = 100; + #declare rstep = rmax / rsteps; + + #while (phi < phimax - phistep/2) + #declare r = rstep; + #while (r < rmax - rstep/2) + cylinder { F(phi, r), F(phi, r + rstep), gr } + sphere { F(phi, r), gr } + #declare r = r + rstep; + #end + #declare phi = phi + phistep; + #end + + #declare rstep = 0.2; + #declare r = rstep; + + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (r < rmax) + #declare phi = 0; + #while (phi < phimax - phistep/2) + cylinder { F(phi, r), F(phi + phistep, r), gr } + sphere { F(phi, r), gr } + #declare phi = phi + phistep; + #end + #declare r = r + rstep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare a = sqrt(2); +#macro G(phi,sg) + < a*sg*sqrt(cos(2*phi))*cos(phi), a*cos(2*phi), a*sqrt(cos(2*phi))*sin(phi)> +#end + +#macro Lemniskate3D(s, farbe) +union { + #declare phi = -pi / 4; + #declare phimax = pi / 4; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + sphere { G(phi,1), s } + cylinder { G(phi,1), G(phi+phistep,1), s } + sphere { G(phi,-1), s } + cylinder { G(phi,-1), G(phi+phistep,-1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare a = sqrt(2); +#macro G2(phi,sg) + a * sqrt(cos(2*phi)) * < sg * cos(phi), 0, sin(phi)> +#end + +#macro Lemniskate(s, farbe) +union { + #declare phi = -pi / 4; + #declare phimax = pi / 4; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + sphere { G2(phi,1), s } + cylinder { G2(phi,1), G2(phi+phistep,1), s } + sphere { G2(phi,-1), s } + cylinder { G2(phi,-1), G2(phi+phistep,-1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Projektion(s, farbe) +union { + #declare phistep = pi / 16; + #declare phi = -pi / 4 + phistep; + #declare phimax = pi / 4; + #while (phi < phimax - phistep/2) + cylinder { G(phi, 1), G2(phi, 1), s } + cylinder { G(phi, -1), G2(phi, -1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare kegelfarbe = rgbf<0.2,0.6,0.2,0.2>; +#declare kegelgitterfarbe = rgb<0.2,0.8,0.2>; +#declare paraboloidfarbe = rgbf<0.2,0.6,1.0,0.2>; +#declare paraboloidgitterfarbe = rgb<0.4,1,1>; + +//intersection { +// union { + Paraboloid(paraboloidfarbe) + Paraboloidgitter(paraboloidgitterfarbe, 0.004) + + Kegel(kegelfarbe) + Kegelgitter(kegelgitterfarbe, 0.004) +// } +// plane { <0, 0, -1>, 0.6 } +//} + + +Lemniskate3D(0.02, rgb<0.8,0.0,0.8>) +Lemniskate(0.02, Red) +Projektion(0.01, Yellow) diff --git a/buch/chapters/110-elliptisch/images/kegelpara.tex b/buch/chapters/110-elliptisch/images/kegelpara.tex new file mode 100644 index 0000000..8fcefbf --- /dev/null +++ b/buch/chapters/110-elliptisch/images/kegelpara.tex @@ -0,0 +1,41 @@ +% +% kegelpara.tex +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{times} +\usepackage{amsmath} +\usepackage{txfonts} +\usepackage[utf8]{inputenc} +\usepackage{graphics} +\usetikzlibrary{arrows,intersections,math} +\usepackage{ifthen} +\begin{document} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{4} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=8cm]{kegelpara.jpg}}; + +% Gitter +\ifthenelse{\boolean{showgrid}}{ +\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe); +\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe); +\draw (-\breite,-\hoehe) grid (\breite, \hoehe); +\fill (0,0) circle[radius=0.05]; +}{} + +\node at (4.1,-1.4) {$X$}; +\node at (0.2,3.8) {$Z$}; +\node at (4.0,1.8) {$Y$}; + +\end{tikzpicture} + +\end{document} + diff --git a/buch/chapters/110-elliptisch/images/torusschnitt.pdf b/buch/chapters/110-elliptisch/images/torusschnitt.pdf Binary files differnew file mode 100644 index 0000000..11bd353 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/torusschnitt.pdf diff --git a/buch/chapters/110-elliptisch/images/torusschnitt.pov b/buch/chapters/110-elliptisch/images/torusschnitt.pov new file mode 100644 index 0000000..43d50c6 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/torusschnitt.pov @@ -0,0 +1,265 @@ +// +// kegelpara.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#version 3.7; +#include "colors.inc" + +#declare O = <0,0,0>; + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.060; + +camera { + location <28, 20, -40> + look_at <0, 0.55, 0> + right (16/9) * x * imagescale + up y * imagescale +} + +light_source { + <30, 10, -40> color White + area_light <1,0,0> <0,0,1>, 10, 10 + adaptive 1 + jitter +} + +sky_sphere { + pigment { + color rgb<1,1,1> + } +} + + +// +// draw an arrow from <from> to <to> with thickness <arrowthickness> with +// color <c> +// +#macro arrow(from, to, arrowthickness, c) +#declare arrowdirection = vnormalize(to - from); +#declare arrowlength = vlength(to - from); +union { + sphere { + from, 1.1 * arrowthickness + } + cylinder { + from, + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + arrowthickness + } + cone { + from + (arrowlength - 5 * arrowthickness) * arrowdirection, + 2 * arrowthickness, + to, + 0 + } + pigment { + color c + } + finish { + specular 0.9 + metallic + } +} +#end + +arrow(<-2,0,0>,<2,0,0>,0.02,White) +arrow(<0,-1.1,0>,<0,2.2,0>,0.02,White) +arrow(<0,0,-1.6>,<0,0,2.4>,0.02,White) + +#declare epsilon = 0.001; +#declare l = 1.5; + + +#declare a = sqrt(2); +#macro G2(phi,sg) + a * sqrt(cos(2*phi)) * < sg * cos(phi), 0, sin(phi)> +#end + +#macro Lemniskate(s, farbe) +union { + #declare phi = -pi / 4; + #declare phimax = pi / 4; + #declare phisteps = 100; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + sphere { G2(phi,1), s } + cylinder { G2(phi,1), G2(phi+phistep,1), s } + sphere { G2(phi,-1), s } + cylinder { G2(phi,-1), G2(phi+phistep,-1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Projektion(s, farbe) +union { + #declare phistep = pi / 16; + #declare phi = -pi / 4 + phistep; + #declare phimax = pi / 4; + #while (phi < phimax - phistep/2) + cylinder { G(phi, 1), G2(phi, 1), s } + cylinder { G(phi, -1), G2(phi, -1), s } + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Ebene(l, b, farbe) +mesh { + triangle { <-l, 0, -b>, < l, 0, -b>, < l, 0, b> } + triangle { <-l, 0, -b>, < l, 0, b>, <-l, 0, b> } + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Ebenengitter(l, b, s, r, farbe) +union { + #declare lmax = floor(l / s); + #declare ll = -lmax; + #while (ll <= lmax) + cylinder { <ll * s, 0, -b>, <ll * s, 0, b>, r } + #declare ll = ll + 1; + #end + #declare bmax = floor(b / s); + #declare bb = -bmax; + #while (bb <= bmax) + cylinder { <-l, 0, bb * s>, <l, 0, bb * s>, r } + #declare bb = bb + 1; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare b = 0.5; +#macro T(phi, theta) + b * < (2 + cos(theta)) * cos(phi), (2 + cos(theta)) * sin(phi) + 1, sin(theta) > +#end + +#macro breitenkreis(theta, r) + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phisteps = 200; + #declare phistep = phimax / phisteps; + #while (phi < phimax - phistep/2) + cylinder { T(phi, theta), T(phi + phistep, theta), r } + sphere { T(phi, theta), r } + #declare phi = phi + phistep; + #end +#end + +#macro laengenkreis(phi, r) + #declare theta = 0; + #declare thetamax = 2 * pi; + #declare thetasteps = 200; + #declare thetastep = thetamax / thetasteps; + #while (theta < thetamax - thetastep/2) + cylinder { T(phi, theta), T(phi, theta + thetastep), r } + sphere { T(phi, theta), r } + #declare theta = theta + thetastep; + #end +#end + +#macro Torusgitter(farbe, r) +union { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phistep = pi / 6; + #while (phi < phimax - phistep/2) + laengenkreis(phi, r) + #declare phi = phi + phistep; + #end + #declare thetamax = pi; + #declare thetastep = pi / 6; + #declare theta = thetastep; + #while (theta < thetamax - thetastep/2) + breitenkreis(theta, r) + breitenkreis(thetamax + theta, r) + #declare theta = theta + thetastep; + #end + breitenkreis(0, 1.5 * r) + breitenkreis(pi, 1.5 * r) + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#macro Torus(farbe) +mesh { + #declare phi = 0; + #declare phimax = 2 * pi; + #declare phisteps = 200; + #declare phistep = phimax/phisteps; + #while (phi < phimax - phistep/2) + #declare theta = 0; + #declare thetamax = 2 * pi; + #declare thetasteps = 200; + #declare thetastep = thetamax / thetasteps; + #while (theta < thetamax - thetastep/2) + triangle { + T(phi, theta), + T(phi + phistep, theta), + T(phi + phistep, theta + thetastep) + } + triangle { + T(phi, theta), + T(phi + phistep, theta + thetastep), + T(phi, theta + thetastep) + } + #declare theta = theta + thetastep; + #end + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.9 + metallic + } +} +#end + +#declare torusfarbe = rgbt<0.2,0.6,0.2,0.2>; +#declare ebenenfarbe = rgbt<0.2,0.6,1.0,0.2>; + +Lemniskate(0.02, Red) +Ebene(1.8, 1.4, ebenenfarbe) +Ebenengitter(1.8, 1.4, 0.5, 0.005, rgb<0.4,1,1>) +Torus(torusfarbe) +Torusgitter(Yellow, 0.005) diff --git a/buch/chapters/110-elliptisch/images/torusschnitt.tex b/buch/chapters/110-elliptisch/images/torusschnitt.tex new file mode 100644 index 0000000..3053ac5 --- /dev/null +++ b/buch/chapters/110-elliptisch/images/torusschnitt.tex @@ -0,0 +1,41 @@ +% +% torusschnitt.tex +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{times} +\usepackage{amsmath} +\usepackage{txfonts} +\usepackage[utf8]{inputenc} +\usepackage{graphics} +\usetikzlibrary{arrows,intersections,math} +\usepackage{ifthen} +\begin{document} + +\newboolean{showgrid} +\setboolean{showgrid}{false} +\def\breite{6} +\def\hoehe{4} + +\begin{tikzpicture}[>=latex,thick] + +% Povray Bild +\node at (0,0) {\includegraphics[width=11.4cm]{torusschnitt.jpg}}; + +% Gitter +\ifthenelse{\boolean{showgrid}}{ +\draw[step=0.1,line width=0.1pt] (-\breite,-\hoehe) grid (\breite, \hoehe); +\draw[step=0.5,line width=0.4pt] (-\breite,-\hoehe) grid (\breite, \hoehe); +\draw (-\breite,-\hoehe) grid (\breite, \hoehe); +\fill (0,0) circle[radius=0.05]; +}{} + +\node at (4.4,-2.4) {$X$}; +\node at (3.5,0.6) {$Y$}; +\node at (0.3,3.8) {$Z$}; + +\end{tikzpicture} + +\end{document} + |