aboutsummaryrefslogtreecommitdiffstats
path: root/vorlesungen/slides/7/images/rodriguez.pov
blob: 07aec19f748ffeb737e2928e89115c9dbc027d63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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)