diff options
Diffstat (limited to 'buch/chapters/090-pde/kugel')
-rw-r--r-- | buch/chapters/090-pde/kugel/Makefile | 18 | ||||
-rw-r--r-- | buch/chapters/090-pde/kugel/common.inc | 227 | ||||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical30.png | bin | 0 -> 124276 bytes | |||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical30.pov | 11 | ||||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical31.png | bin | 0 -> 237355 bytes | |||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical31.pov | 11 | ||||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical32.png | bin | 0 -> 212436 bytes | |||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical32.pov | 11 | ||||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical33.png | bin | 0 -> 146173 bytes | |||
-rw-r--r-- | buch/chapters/090-pde/kugel/spherical33.pov | 11 |
10 files changed, 289 insertions, 0 deletions
diff --git a/buch/chapters/090-pde/kugel/Makefile b/buch/chapters/090-pde/kugel/Makefile new file mode 100644 index 0000000..4daf173 --- /dev/null +++ b/buch/chapters/090-pde/kugel/Makefile @@ -0,0 +1,18 @@ +# +# Makefile -- build images for cover +# +# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +all: spherical30.png spherical31.png spherical32.png spherical33.png + +spherical30.png: common.inc spherical30.pov + povray +A0.1 +UA +W1080 +H1080 -Ospherical30.png spherical30.pov + +spherical31.png: common.inc spherical31.pov + povray +A0.1 +UA +W1080 +H1080 -Ospherical31.png spherical31.pov + +spherical32.png: common.inc spherical32.pov + povray +A0.1 +UA +W1080 +H1080 -Ospherical32.png spherical32.pov + +spherical33.png: common.inc spherical33.pov + povray +A0.1 +UA +W1080 +H1080 -Ospherical33.png spherical33.pov diff --git a/buch/chapters/090-pde/kugel/common.inc b/buch/chapters/090-pde/kugel/common.inc new file mode 100644 index 0000000..ed5f78c --- /dev/null +++ b/buch/chapters/090-pde/kugel/common.inc @@ -0,0 +1,227 @@ +// +// common.inc +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// +#include "colors.inc" +#include "math.inc" + +global_settings { + assumed_gamma 1 +} + +#declare imagescale = 0.035; +#declare thetasteps = 100; + #declare phisteps = 200; + +#declare PositiveColor = rgb<1.0,0.6,0.2>; +#declare NegativeColor = rgb<0.6,0.2,0.6>; + +camera { + location <-33, 20, 50> + look_at <0, 0, 0> + right x * imagescale + up y * imagescale +} + +background { color rgbt <0,0,0,1> } + +light_source { + <10, 5, 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(<-1.1,0,0>, <1.1,0,0>, 0.01, White) +//arrow(<0,-1.1,0>, <0,1.1,0>, 0.01, White) +//arrow(<0,0,-1.1>, <0,0,1.1>, 0.01, White) + +#declare P33 = function(X) { (1-X*X) * sqrt(1-X*X) }; +#declare P33abl = function(X) { -3*X*sqrt(1-X*X) }; +#declare P32 = function(X) { 2.7 * (1-X*X) * X }; +#declare P32abl = function(X) { 2.7 * (1-3*X*X) }; +#declare P31 = function(X) { (0.75) * (5*X*X-1) * sqrt(1-X*X) }; +#declare P31abl = function(X) { 0.75 * (15*X*X-11)*X / sqrt(1-0.9999*X*X) }; +#declare P30 = function(X) { (1/2) * (5*X*X-3)*X }; +#declare P30abl = function(X) { (1/2) * 15*X*X-3 }; + +#macro kugel0(phi,theta) +<cos(phi)*sin(theta), cos(theta), sin(phi)*sin(theta)> +#end +#macro kugelphi(phi,theta) +<-sin(phi)*sin(theta), 0, cos(phi)*sin(theta)> +#end +#macro kugeltheta(phi,theta) +<cos(phi)*cos(theta), -sin(theta), sin(phi)*cos(theta)> +#end + +#declare fcos = function(phi,eps) { abs(cos(phi)) * (1+eps*sgn(cos(phi))) } +#declare fradius = function(r,eps) { sqrt(abs(r)) * (1+eps*sgn(r)) } + +#macro kugel(phi, theta, m, eps) + #switch (m) + #case (0) + fradius(P30(cos(theta)) * cos(m*phi),eps) * kugel0(phi,theta) + #break + #case (1) + fradius(P31(cos(theta)) * cos(m*phi),eps) * kugel0(phi,theta) + #break + #case (2) + fradius(P32(cos(theta)) * cos(m*phi),eps) * kugel0(phi,theta) + #break + #case (3) + fradius(P33(cos(theta)) * cos(m*phi),eps) * kugel0(phi,theta) + #end +#end + +#macro normale(phi, theta, m, eps) + #switch (m) + #case (0) + vnormalize(vcross( + P30(cos(theta))*(-m)*sin(m*phi)*kugelphi(phi,theta) + + + fradius(P30(cos(theta))*cos(m*phi),eps) * kugelphi(phi,theta), + P30abl(cos(theta))*(-sin(theta))*cos(m*phi) * kugel0(phi,theta) + + + fradius(P30(cos(theta))*cos(m*phi),eps) * kugeltheta(phi,theta) + + )) + #break + #case (1) + vnormalize(vcross( + P31(cos(theta))*(-m)*sin(m*phi)*kugelphi(phi,theta) + + + fradius(P31(cos(theta))*cos(m*phi),eps) * kugelphi(phi,theta), + P31abl(cos(theta))*(-sin(theta))*cos(m*phi) * kugel0(phi,theta) + + + fradius(P31(cos(theta))*cos(m*phi),eps) * kugeltheta(phi,theta) + + )) + #break + #case (2) + vnormalize(vcross( + P32(cos(theta))*(-m)*sin(m*phi)*kugelphi(phi,theta) + + + fradius(P32(cos(theta))*cos(m*phi),eps) * kugelphi(phi,theta), + P32abl(cos(theta))*(-sin(theta))*cos(m*phi) * kugel0(phi,theta) + + + fradius(P32(cos(theta))*cos(m*phi),eps) * kugeltheta(phi,theta) + + )) + #break + #case (3) + vnormalize(vcross( + P33(cos(theta))*(-m)*sin(m*phi)*kugelphi(phi,theta) + + + fradius(P33(cos(theta))*cos(m*phi),eps) * kugelphi(phi,theta), + P33abl(cos(theta))*(-sin(theta))*cos(m*phi) * kugel0(phi,theta) + + + fradius(P33(cos(theta))*cos(m*phi),eps) * kugeltheta(phi,theta) + + )) + #break + #end +#end + +#macro kugelflaeche(m, eps, farbe) +mesh { + #declare thetastep = pi / thetasteps; + #declare thetamin = thetastep; + #declare thetamax = pi - thetastep; + + #declare phistep = pi / phisteps; + #declare phimin = 0; + #declare phimax = 2 * pi; + + #declare phi = phimin; + #while (phi < phimax - phistep/2) + triangle { + kugel(0, 0, m, eps), + kugel(phi, thetamin, m, eps), + kugel(phi + phistep, thetamin, m, eps) + } + + #declare theta = thetamin; + #while (theta < thetamax - thetastep/2) + triangle { + kugel(phi, theta, m, eps), + kugel(phi + phistep, theta, m, eps), + kugel(phi + phistep, theta + thetastep, m, eps) + } + triangle { + kugel(phi, theta, m, eps), + kugel(phi, theta + thetastep, m, eps), + kugel(phi + phistep, theta + thetastep, m, eps) + } + #declare theta = theta + thetastep; + #end + + triangle { + kugel(0, pi, m, eps), + kugel(phi, thetamax, m, eps), + kugel(phi + phistep, thetamax, m, eps) + } + + #declare phi = phi + phistep; + #end + pigment { + color farbe + } + finish { + specular 0.95 + metallic + } +} +#end + +//sphere { +// <0,0,0>, 1 +// pigment { +// color rgbt<1,1,1,0.7> +// } +// finish { +// specular 0.95 +// metallic +// } +//} + + diff --git a/buch/chapters/090-pde/kugel/spherical30.png b/buch/chapters/090-pde/kugel/spherical30.png Binary files differnew file mode 100644 index 0000000..d24d786 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical30.png diff --git a/buch/chapters/090-pde/kugel/spherical30.pov b/buch/chapters/090-pde/kugel/spherical30.pov new file mode 100644 index 0000000..1a7d979 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical30.pov @@ -0,0 +1,11 @@ +// +// spherical30.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// + +#version 3.7; +#include "common.inc" + +kugelflaeche(0, 0.001, PositiveColor) +kugelflaeche(0, -0.001, NegativeColor) diff --git a/buch/chapters/090-pde/kugel/spherical31.png b/buch/chapters/090-pde/kugel/spherical31.png Binary files differnew file mode 100644 index 0000000..95d9789 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical31.png diff --git a/buch/chapters/090-pde/kugel/spherical31.pov b/buch/chapters/090-pde/kugel/spherical31.pov new file mode 100644 index 0000000..bc161f0 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical31.pov @@ -0,0 +1,11 @@ +// +// spherical30.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// + +#version 3.7; +#include "common.inc" + +kugelflaeche(1, 0.001, PositiveColor) +kugelflaeche(1, -0.001, NegativeColor) diff --git a/buch/chapters/090-pde/kugel/spherical32.png b/buch/chapters/090-pde/kugel/spherical32.png Binary files differnew file mode 100644 index 0000000..1ba6bd0 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical32.png diff --git a/buch/chapters/090-pde/kugel/spherical32.pov b/buch/chapters/090-pde/kugel/spherical32.pov new file mode 100644 index 0000000..6cb20c8 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical32.pov @@ -0,0 +1,11 @@ +// +// spherical30.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// + +#version 3.7; +#include "common.inc" + +kugelflaeche(2, 0.001, PositiveColor) +kugelflaeche(2, -0.001, NegativeColor) diff --git a/buch/chapters/090-pde/kugel/spherical33.png b/buch/chapters/090-pde/kugel/spherical33.png Binary files differnew file mode 100644 index 0000000..fb9de45 --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical33.png diff --git a/buch/chapters/090-pde/kugel/spherical33.pov b/buch/chapters/090-pde/kugel/spherical33.pov new file mode 100644 index 0000000..8a9a53a --- /dev/null +++ b/buch/chapters/090-pde/kugel/spherical33.pov @@ -0,0 +1,11 @@ +// +// spherical30.pov +// +// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +// + +#version 3.7; +#include "common.inc" + +kugelflaeche(3, 0.001, PositiveColor) +kugelflaeche(3, -0.001, NegativeColor) |