aboutsummaryrefslogtreecommitdiffstats
path: root/vorlesungen/slides/7/images/commutator.m
blob: 3f5ea176b22b923dc14a2287dda8023c33ff5fd2 (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
#
# 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