aboutsummaryrefslogtreecommitdiffstats
path: root/vorlesungen/slides/7/images
diff options
context:
space:
mode:
authorJoshua Baer <the.baer.joshua@gmail.ch>2021-04-12 21:51:55 +0200
committerJoshua Baer <the.baer.joshua@gmail.ch>2021-04-12 21:51:55 +0200
commit2db90bfe4b174570424c408f04000902411d8755 (patch)
treee297a6274ff748de27257bffd7097c6b362ba12d /vorlesungen/slides/7/images
parentadd new files (diff)
downloadSeminarMatrizen-2db90bfe4b174570424c408f04000902411d8755.tar.gz
SeminarMatrizen-2db90bfe4b174570424c408f04000902411d8755.zip
update to current state of book
Diffstat (limited to 'vorlesungen/slides/7/images')
-rw-r--r--vorlesungen/slides/7/images/Makefile38
-rw-r--r--vorlesungen/slides/7/images/common.inc140
-rw-r--r--vorlesungen/slides/7/images/commutator.ini16
-rw-r--r--vorlesungen/slides/7/images/commutator.m222
-rw-r--r--vorlesungen/slides/7/images/commutator.pov118
-rw-r--r--vorlesungen/slides/7/images/rodriguez.pov236
6 files changed, 385 insertions, 385 deletions
diff --git a/vorlesungen/slides/7/images/Makefile b/vorlesungen/slides/7/images/Makefile
index cc67c8a..9de1c34 100644
--- a/vorlesungen/slides/7/images/Makefile
+++ b/vorlesungen/slides/7/images/Makefile
@@ -1,19 +1,19 @@
-#
-# Makefile -- Illustrationen zu
-#
-# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
-# 
-all: rodriguez.jpg
-
-rodriguez.png: rodriguez.pov
- povray +A0.1 -W1920 -H1080 -Orodriguez.png rodriguez.pov
-
-rodriguez.jpg: rodriguez.png
- convert -extract 1740x1070+135+10 rodriguez.png rodriguez.jpg
-
-commutator: commutator.ini commutator.pov common.inc
- povray +A0.1 -W1920 -H1080 -Oc/c.png commutator.ini
-jpg:
- for f in c/c*.png; do convert $${f} c/`basename $${f} .png`.jpg; done
-
-
+#
+# Makefile -- Illustrationen zu
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+# 
+all: rodriguez.jpg
+
+rodriguez.png: rodriguez.pov
+ povray +A0.1 -W1920 -H1080 -Orodriguez.png rodriguez.pov
+
+rodriguez.jpg: rodriguez.png
+ convert -extract 1740x1070+135+10 rodriguez.png rodriguez.jpg
+
+commutator: commutator.ini commutator.pov common.inc
+ povray +A0.1 -W1920 -H1080 -Oc/c.png commutator.ini
+jpg:
+ for f in c/c*.png; do convert $${f} c/`basename $${f} .png`.jpg; done
+
+
diff --git a/vorlesungen/slides/7/images/common.inc b/vorlesungen/slides/7/images/common.inc
index 0e27c9a..b028956 100644
--- a/vorlesungen/slides/7/images/common.inc
+++ b/vorlesungen/slides/7/images/common.inc
@@ -1,70 +1,70 @@
-//
-// common.inc
-//
-// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
-//
-#version 3.7;
-#include "colors.inc"
-
-global_settings {
- assumed_gamma 1
-}
-
-#declare imagescale = 0.025;
-#declare O = <0, 0, 0>;
-#declare at = 0.015;
-
-camera {
- location <18, 15, -50>
- look_at <0.0, 0.5, 0>
- right 16/9 * x * imagescale
- up y * imagescale
-}
-
-light_source {
- <-40, 30, -50> color White
- area_light <1,0,0> <0,0,1>, 10, 10
- adaptive 1
- jitter
-}
-
-sky_sphere {
- pigment {
- color rgb<1,1,1>
- }
-}
-
-#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
-
-#declare l = 1.2;
-
-arrow(< -l, 0, 0 >, < l, 0, 0 >, at, White)
-arrow(< 0, 0, -l >, < 0, 0, l >, at, White)
-arrow(< 0, -l, 0 >, < 0, l, 0 >, at, White)
-
+//
+// common.inc
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#version 3.7;
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1
+}
+
+#declare imagescale = 0.025;
+#declare O = <0, 0, 0>;
+#declare at = 0.015;
+
+camera {
+ location <18, 15, -50>
+ look_at <0.0, 0.5, 0>
+ right 16/9 * x * imagescale
+ up y * imagescale
+}
+
+light_source {
+ <-40, 30, -50> color White
+ area_light <1,0,0> <0,0,1>, 10, 10
+ adaptive 1
+ jitter
+}
+
+sky_sphere {
+ pigment {
+ color rgb<1,1,1>
+ }
+}
+
+#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
+
+#declare l = 1.2;
+
+arrow(< -l, 0, 0 >, < l, 0, 0 >, at, White)
+arrow(< 0, 0, -l >, < 0, 0, l >, at, White)
+arrow(< 0, -l, 0 >, < 0, l, 0 >, at, White)
+
diff --git a/vorlesungen/slides/7/images/commutator.ini b/vorlesungen/slides/7/images/commutator.ini
index 8c2211e..44a5ac5 100644
--- a/vorlesungen/slides/7/images/commutator.ini
+++ b/vorlesungen/slides/7/images/commutator.ini
@@ -1,8 +1,8 @@
-Input_File_Name=commutator.pov
-Initial_Frame=1
-Final_Frame=60
-Initial_Clock=1
-Final_Clock=60
-Cyclic_Animation=off
-Pause_when_Done=off
-
+Input_File_Name=commutator.pov
+Initial_Frame=1
+Final_Frame=60
+Initial_Clock=1
+Final_Clock=60
+Cyclic_Animation=off
+Pause_when_Done=off
+
diff --git a/vorlesungen/slides/7/images/commutator.m b/vorlesungen/slides/7/images/commutator.m
index 5a448db..3f5ea17 100644
--- a/vorlesungen/slides/7/images/commutator.m
+++ b/vorlesungen/slides/7/images/commutator.m
@@ -1,111 +1,111 @@
-#
-# commutator.m
-#
-# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
-#
-
-X = [
- 0, 0, 0;
- 0, 0, -1;
- 0, 1, 0
-];
-
-Y = [
- 0, 0, 1;
- 0, 0, 0;
- -1, 0, 0
-];
-
-Z = [
- 0, -1, 0;
- 1, 0, 0;
- 0, 0, 0
-];
-
-function retval = Dx(alpha)
- retval = [
- 1, 0, 0 ;
- 0, cos(alpha), -sin(alpha);
- 0, sin(alpha), cos(alpha)
- ];
-end
-
-function retval = Dy(beta)
- retval = [
- cos(beta), 0, sin(beta);
- 0, 1, 0 ;
- -sin(beta), 0, cos(beta)
- ];
-end
-
-t = 0.9;
-P = Dx(t) * Dy(t)
-Q = Dy(t) * Dx(t)
-P - Q
-(P - Q) * [0;0;1]
-
-function retval = kurven(filename, t)
- retval = -1;
- N = 20;
- fn = fopen(filename, "w");
- fprintf(fn, "//\n");
- fprintf(fn, "// %s\n", filename);
- fprintf(fn, "//\n");
- fprintf(fn, "#macro XYkurve()\n");
- for i = (0:N-1)
- v1 = Dx(t * i / N) * [0;0;1];
- v2 = Dx(t * (i+1) / N) * [0;0;1];
- fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1));
- fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
- end
- for i = (0:N-1)
- v1 = Dx(t) * Dy(t * i / N) * [0;0;1];
- v2 = Dx(t) * Dy(t * (i+1) / N) * [0;0;1];
- fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1));
- fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
- end
- fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
- v2(1,1), v2(3,1), v2(2,1));
- fprintf(fn, "#end\n");
- fprintf(fn, "#declare finalXY = <%.4f, %.4f, %.4f>;\n",
- v2(1,1), v2(3,1), v2(2,1));
- fprintf(fn, "#macro YXkurve()\n");
- for i = (0:N-1)
- v1 = Dy(t * i / N) * [0;0;1];
- v2 = Dy(t * (i+1) / N) * [0;0;1];
- fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1));
- fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
- end
- for i = (0:N-1)
- v1 = Dy(t) * Dx(t * i / N) * [0;0;1];
- v2 = Dy(t) * Dx(t * (i+1) / N) * [0;0;1];
- fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1));
- fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
- v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
- end
- fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
- v2(1,1), v2(3,1), v2(2,1));
- fprintf(fn, "#end\n");
- fprintf(fn, "#declare finalYX = <%.4f, %.4f, %.4f>;\n",
- v2(1,1), v2(3,1), v2(2,1));
-
- fclose(fn);
- retval = 0;
-end
-
-function retval = kurve(i)
- n = pi / 180;
- filename = sprintf("f/%04d.inc", i);
- kurven(filename, n * i);
-end
-
-for i = (1:60)
- kurve(i);
-end
+#
+# commutator.m
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+
+X = [
+ 0, 0, 0;
+ 0, 0, -1;
+ 0, 1, 0
+];
+
+Y = [
+ 0, 0, 1;
+ 0, 0, 0;
+ -1, 0, 0
+];
+
+Z = [
+ 0, -1, 0;
+ 1, 0, 0;
+ 0, 0, 0
+];
+
+function retval = Dx(alpha)
+ retval = [
+ 1, 0, 0 ;
+ 0, cos(alpha), -sin(alpha);
+ 0, sin(alpha), cos(alpha)
+ ];
+end
+
+function retval = Dy(beta)
+ retval = [
+ cos(beta), 0, sin(beta);
+ 0, 1, 0 ;
+ -sin(beta), 0, cos(beta)
+ ];
+end
+
+t = 0.9;
+P = Dx(t) * Dy(t)
+Q = Dy(t) * Dx(t)
+P - Q
+(P - Q) * [0;0;1]
+
+function retval = kurven(filename, t)
+ retval = -1;
+ N = 20;
+ fn = fopen(filename, "w");
+ fprintf(fn, "//\n");
+ fprintf(fn, "// %s\n", filename);
+ fprintf(fn, "//\n");
+ fprintf(fn, "#macro XYkurve()\n");
+ for i = (0:N-1)
+ v1 = Dx(t * i / N) * [0;0;1];
+ v2 = Dx(t * (i+1) / N) * [0;0;1];
+ fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1));
+ fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
+ end
+ for i = (0:N-1)
+ v1 = Dx(t) * Dy(t * i / N) * [0;0;1];
+ v2 = Dx(t) * Dy(t * (i+1) / N) * [0;0;1];
+ fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1));
+ fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
+ end
+ fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
+ v2(1,1), v2(3,1), v2(2,1));
+ fprintf(fn, "#end\n");
+ fprintf(fn, "#declare finalXY = <%.4f, %.4f, %.4f>;\n",
+ v2(1,1), v2(3,1), v2(2,1));
+ fprintf(fn, "#macro YXkurve()\n");
+ for i = (0:N-1)
+ v1 = Dy(t * i / N) * [0;0;1];
+ v2 = Dy(t * (i+1) / N) * [0;0;1];
+ fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1));
+ fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
+ end
+ for i = (0:N-1)
+ v1 = Dy(t) * Dx(t * i / N) * [0;0;1];
+ v2 = Dy(t) * Dx(t * (i+1) / N) * [0;0;1];
+ fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1));
+ fprintf(fn, "cylinder { <%.4f,%.4f,%.4f>, <%.4f, %.4f, %.4f>, at }\n",
+ v1(1,1), v1(3,1), v1(2,1), v2(1,1), v2(3,1), v2(2,1));
+ end
+ fprintf(fn, "sphere { <%.4f,%.4f,%.4f>, at }\n",
+ v2(1,1), v2(3,1), v2(2,1));
+ fprintf(fn, "#end\n");
+ fprintf(fn, "#declare finalYX = <%.4f, %.4f, %.4f>;\n",
+ v2(1,1), v2(3,1), v2(2,1));
+
+ fclose(fn);
+ retval = 0;
+end
+
+function retval = kurve(i)
+ n = pi / 180;
+ filename = sprintf("f/%04d.inc", i);
+ kurven(filename, n * i);
+end
+
+for i = (1:60)
+ kurve(i);
+end
diff --git a/vorlesungen/slides/7/images/commutator.pov b/vorlesungen/slides/7/images/commutator.pov
index 9ae11b9..8229a06 100644
--- a/vorlesungen/slides/7/images/commutator.pov
+++ b/vorlesungen/slides/7/images/commutator.pov
@@ -1,59 +1,59 @@
-//
-// commutator.pov
-//
-// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
-//
-#include "common.inc"
-
-sphere { O, 0.99
- pigment {
- color rgbt<1,1,1,0.5>
- }
- finish {
- specular 0.9
- metallic
- }
-}
-
-#declare filename = concat("f/", str(clock, -4, 0), ".inc");
-
-#include filename
-
-#declare n1 = vcross(<0,1,0>, finalXY);
-#declare n2 = vcross(<0,1,0>, finalYX);
-
-intersection {
- sphere { O, 1 }
- plane { -n1, 0 }
- plane { n2, 0 }
- pigment {
- color rgb<0,0.4,0.1>
- }
- finish {
- specular 0.9
- metallic
- }
-}
-
-union {
- XYkurve()
- pigment {
- color Red
- }
- finish {
- specular 0.9
- metallic
- }
-}
-
-union {
- YXkurve()
- pigment {
- color Blue
- }
- finish {
- specular 0.9
- metallic
- }
-}
-
+//
+// commutator.pov
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#include "common.inc"
+
+sphere { O, 0.99
+ pigment {
+ color rgbt<1,1,1,0.5>
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+
+#declare filename = concat("f/", str(clock, -4, 0), ".inc");
+
+#include filename
+
+#declare n1 = vcross(<0,1,0>, finalXY);
+#declare n2 = vcross(<0,1,0>, finalYX);
+
+intersection {
+ sphere { O, 1 }
+ plane { -n1, 0 }
+ plane { n2, 0 }
+ pigment {
+ color rgb<0,0.4,0.1>
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+
+union {
+ XYkurve()
+ pigment {
+ color Red
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+
+union {
+ YXkurve()
+ pigment {
+ color Blue
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+
diff --git a/vorlesungen/slides/7/images/rodriguez.pov b/vorlesungen/slides/7/images/rodriguez.pov
index 07aec19..62306f8 100644
--- a/vorlesungen/slides/7/images/rodriguez.pov
+++ b/vorlesungen/slides/7/images/rodriguez.pov
@@ -1,118 +1,118 @@
-//
-// rodriguez.pov
-//
-// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
-//
-#version 3.7;
-#include "colors.inc"
-
-global_settings {
- assumed_gamma 1
-}
-
-#declare imagescale = 0.020;
-#declare O = <0, 0, 0>;
-#declare at = 0.015;
-
-camera {
- location <8, 15, -50>
- look_at <0.1, 0.475, 0>
- right 16/9 * x * imagescale
- up y * imagescale
-}
-
-light_source {
- <-4, 20, -50> color White
- area_light <1,0,0> <0,0,1>, 10, 10
- adaptive 1
- jitter
-}
-
-sky_sphere {
- pigment {
- color rgb<1,1,1>
- }
-}
-
-#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
-
-#declare K = vnormalize(<0.2,1,0.1>);
-#declare X = vnormalize(<1.1,1,-1.2>);
-#declare O = <0,0,0>;
-
-#declare r = vlength(vcross(K, X)) / vlength(K);
-
-#declare l = 1.0;
-
-arrow(< -l, 0, 0 >, < l, 0, 0 >, at, White)
-arrow(< 0, 0, -l >, < 0, 0, l >, at, White)
-arrow(< 0, -l, 0 >, < 0, l, 0 >, at, White)
-
-arrow(O, X, at, Red)
-arrow(O, K, at, Blue)
-
-#macro punkt(H,phi)
- ((H-vdot(K,H)*K)*cos(phi) + vcross(K,H)*sin(phi) + vdot(K,X)*K)
-#end
-
-cone { vdot(K, X) * K, r, O, 0
- pigment {
- color rgbt<0.6,0.6,0.6,0.5>
- }
- finish {
- specular 0.9
- metallic
- }
-}
-
-
-union {
- #declare phistep = pi / 100;
- #declare phi = 0;
- #while (phi < 2 * pi - phistep/2)
- sphere { punkt(K, phi), at/2 }
- cylinder {
- punkt(X, phi),
- punkt(X, phi + phistep),
- at/2
- }
- #declare phi = phi + phistep;
- #end
- pigment {
- color Orange
- }
- finish {
- specular 0.9
- metallic
- }
-}
-
-arrow(vdot(K,X)*K, punkt(X, 0), at, Yellow)
-#declare Darkgreen = rgb<0,0.5,0>;
-arrow(vdot(K,X)*K, punkt(X, pi/2), at, Darkgreen)
+//
+// rodriguez.pov
+//
+// (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+#version 3.7;
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1
+}
+
+#declare imagescale = 0.020;
+#declare O = <0, 0, 0>;
+#declare at = 0.015;
+
+camera {
+ location <8, 15, -50>
+ look_at <0.1, 0.475, 0>
+ right 16/9 * x * imagescale
+ up y * imagescale
+}
+
+light_source {
+ <-4, 20, -50> color White
+ area_light <1,0,0> <0,0,1>, 10, 10
+ adaptive 1
+ jitter
+}
+
+sky_sphere {
+ pigment {
+ color rgb<1,1,1>
+ }
+}
+
+#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
+
+#declare K = vnormalize(<0.2,1,0.1>);
+#declare X = vnormalize(<1.1,1,-1.2>);
+#declare O = <0,0,0>;
+
+#declare r = vlength(vcross(K, X)) / vlength(K);
+
+#declare l = 1.0;
+
+arrow(< -l, 0, 0 >, < l, 0, 0 >, at, White)
+arrow(< 0, 0, -l >, < 0, 0, l >, at, White)
+arrow(< 0, -l, 0 >, < 0, l, 0 >, at, White)
+
+arrow(O, X, at, Red)
+arrow(O, K, at, Blue)
+
+#macro punkt(H,phi)
+ ((H-vdot(K,H)*K)*cos(phi) + vcross(K,H)*sin(phi) + vdot(K,X)*K)
+#end
+
+cone { vdot(K, X) * K, r, O, 0
+ pigment {
+ color rgbt<0.6,0.6,0.6,0.5>
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+
+
+union {
+ #declare phistep = pi / 100;
+ #declare phi = 0;
+ #while (phi < 2 * pi - phistep/2)
+ sphere { punkt(K, phi), at/2 }
+ cylinder {
+ punkt(X, phi),
+ punkt(X, phi + phistep),
+ at/2
+ }
+ #declare phi = phi + phistep;
+ #end
+ pigment {
+ color Orange
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+
+arrow(vdot(K,X)*K, punkt(X, 0), at, Yellow)
+#declare Darkgreen = rgb<0,0.5,0>;
+arrow(vdot(K,X)*K, punkt(X, pi/2), at, Darkgreen)