Skip to content

Commit b2db1d3

Browse files
committed
docu
1 parent 2802459 commit b2db1d3

9 files changed

+331
-88
lines changed

images/SingleSlipModel_06.png

33.6 KB
Loading

pages/documentation_matlab/SO3FunSymmetricFunctions.html

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,14 @@
4444
{% highlight matlab %}
4545
ori = orientation.rand(cs,ss);
4646
SO3F.eval(ori.symmetrise).'
47+
SO3F.eval(ss*ori*cs)
4748
{% endhighlight %}
4849

4950
{% highlight plaintext %}
5051
ans =
51-
0.2239 0.2239 0.2239 0.2239 0.2239 0.2239
52+
0.0266 0.0266 0.0266 0.0266 0.0266 0.0266
53+
ans =
54+
0.0266 0.0266 0.0266 0.0266 0.0266 0.0266
5255
{% endhighlight %}
5356
<p>The symmetries have, for example, an influence on the plot domain.</p>
5457
{% highlight matlab %}
@@ -78,19 +81,19 @@
7881
SO3F2 = SO3FunHarmonic (xyz → xyz)
7982
isReal: false
8083
bandwidth: 9
81-
weight: 0.78
84+
weight: 0.66
8285

8386
ans =
84-
0.7837
85-
0.9085
86-
0.8715
87-
0.6646
88-
0.9319
89-
0.9774
90-
0.5131
91-
0.0560
92-
0.6100
93-
0.9430
87+
0.6594
88+
0.1356
89+
0.8415
90+
0.1153
91+
0.9864
92+
0.9954
93+
0.2812
94+
0.7690
95+
0.2734
96+
0.8753
9497
{% endhighlight %}
9598

9699
{% highlight matlab %}
@@ -108,19 +111,19 @@
108111
SO3F2 = SO3FunHarmonic (121 → xyz)
109112
isReal: false
110113
bandwidth: 9
111-
weight: 0.78
114+
weight: 0.66
112115

113116
ans =
114-
0.7837
115-
0.9085
116-
0.8715
117-
0.6646
118-
0.9319
119-
0.9774
120-
0.5131
121-
0.0560
122-
0.6100
123-
0.9430
117+
0.6594
118+
0.1356
119+
0.8415
120+
0.1153
121+
0.9864
122+
0.9954
123+
0.2812
124+
0.7690
125+
0.2734
126+
0.8753
124127
{% endhighlight %}
125128

126129
{% highlight matlab %}
@@ -138,19 +141,19 @@
138141
SO3F2 = SO3FunHarmonic (121 → xyz)
139142
isReal: false
140143
bandwidth: 9
141-
weight: 0.78
144+
weight: 0.66
142145

143146
ans =
144-
0.7837 - 0.0000i
145-
0.1219 + 0.0000i
147+
0.6594 - 0.0000i
148+
0.0101 + 0.0000i
146149
0.0000 + 0.0000i
147-
-0.1219 - 0.0000i
148-
0.2094 + 0.0000i
150+
-0.0101 - 0.0000i
151+
0.3526 + 0.0000i
149152
0.0000 + 0.0000i
150-
-0.2094 - 0.0000i
151-
-0.4435 + 0.0000i
153+
-0.3526 - 0.0000i
154+
-0.0531 + 0.0000i
152155
0.0000 + 0.0000i
153-
0.4435 - 0.0000i
156+
0.0531 - 0.0000i
154157
{% endhighlight %}
155158

156159
{% highlight matlab %}
Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
---
2+
title: The Tangent Space on the Rotation Group
3+
4+
sidebar: documentation_sidebar
5+
permalink: SO3FunTangentSpace.html
6+
folder: documentation
7+
toc: false
8+
---
9+
<html><head>
10+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
11+
<!--
12+
This HTML was auto-generated from MATLAB code.
13+
To make changes, update the MATLAB code and republish this document.
14+
--><title>The Tangent Space on the Rotation Group</title><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.source" content="script_SO3FunTangentSpace.m"></head><body><font size="2"><a href="https://github.com/mtex-toolbox/mtex/blob/develop/doc/SO3Functions/SO3FunTangentSpace.m">
15+
edit page</a></font><div><!--introduction--><!--/introduction--><p>The tangent space of the rotation group at some rotation \(R\) has 2 different representations. There is a left and a right representation.</p><p>The left tangent space is defined by</p><p>\[ T_R SO(3) = \{ S \cdot R | S=-S^T \} = \mathfrac{so}(3) \cdot R, \]</p><p>where \(\mathfrac{so}(3)\) describes the set of all skew symmetric matices, i.e. <a href="spinTensor.spinTensor.html">spinTensor</a>'s.</p>
16+
{% highlight matlab %}
17+
R = rotation.byAxisAngle(xvector,20*degree)
18+
S1 = spinTensor(vector3d(0,0,1))
19+
% left tangent vector
20+
matrix(S1)*matrix(R)
21+
{% endhighlight %}
22+
23+
{% highlight plaintext %}
24+
R = rotation
25+
26+
Bunge Euler angles in degree
27+
phi1 Phi phi2
28+
0 20 0
29+
30+
31+
S1 = spinTensor (xyz)
32+
rank: 2 (3 x 3)
33+
34+
0 -1 0
35+
1 0 0
36+
0 0 0
37+
ans =
38+
0 -0.9397 0.3420
39+
1.0000 0 0
40+
0 0 0
41+
{% endhighlight %}
42+
<p>Analogously the right tangent space is defined by</p><p>\[ T_R SO(3) = \{ R \cdot S | S=-S^T \} = R \cdot \mathfrac{so}(3). \]</p>
43+
{% highlight matlab %}
44+
% right tangent vector
45+
S2 = spinTensor(vector3d(0,sin(20*degree),cos(20*degree)))
46+
matrix(R)*matrix(S2)
47+
{% endhighlight %}
48+
49+
{% highlight plaintext %}
50+
S2 = spinTensor (xyz)
51+
rank: 2 (3 x 3)
52+
53+
*10^-2
54+
0 -93.97 34.2
55+
93.97 0 0
56+
-34.2 0 0
57+
ans =
58+
0 -0.9397 0.3420
59+
1.0000 0 0
60+
0.0000 0 0
61+
{% endhighlight %}
62+
<p>Note that this spaces are the same.</p><p>In MTEX a tangent vectors is defined by its <a href="spinTensor.spinTensor.html">spinTensor</a> and an attribute which describes whether it is right or left. Moreover the <a href="spinTensor.spinTensor.html">spinTensor</a> is saved as <a href="vector3d.vector3d.html">vector3d</a>, in the following way:</p>
63+
{% highlight matlab %}
64+
vL = SO3TangentVector(vector3d(1,2,3))
65+
S = spinTensor(vL)
66+
{% endhighlight %}
67+
68+
{% highlight plaintext %}
69+
vL = SO3TangentVector
70+
TagentSpace: left
71+
x y z
72+
1 2 3
73+
74+
S = spinTensor (xyz)
75+
rank: 2 (3 x 3)
76+
77+
0 -3 2
78+
3 0 -1
79+
-2 1 0
80+
{% endhighlight %}
81+
<p>Note that the default tangent space representation is left. We can construct an right tangent vector by</p>
82+
{% highlight matlab %}
83+
vR = SO3TangentVector(vector3d(1,2,3),'right')
84+
{% endhighlight %}
85+
86+
{% highlight plaintext %}
87+
vR = SO3TangentVector
88+
TagentSpace: right
89+
x y z
90+
1 2 3
91+
{% endhighlight %}
92+
<p>Here <code class="language-plaintext highlighter-rouge">vL</code> and <code class="language-plaintext highlighter-rouge">vR</code> have the same coordinates in different spaces (bases). Hence they describe different tangent vectors.</p><p>We can also transform left tangent vectors to right tangent vectors and otherwise. Therefore the rotation in which the tangent space is located is necessary.</p>
93+
{% highlight matlab %}
94+
vR = right(vL,R)
95+
vL = left(vL,R)
96+
{% endhighlight %}
97+
98+
{% highlight plaintext %}
99+
vR = SO3TangentVector
100+
TagentSpace: right
101+
x y z
102+
1 2.90545 2.13504
103+
104+
vL = SO3TangentVector
105+
TagentSpace: left
106+
x y z
107+
1 2 3
108+
{% endhighlight %}
109+
<p>We can do the same manually by</p>
110+
{% highlight matlab %}
111+
vR = inv(R)*vL
112+
vL = R*vR
113+
{% endhighlight %}
114+
115+
{% highlight plaintext %}
116+
vR = vector3d
117+
x y z
118+
1 2.90545 2.13504
119+
120+
vL = vector3d
121+
x y z
122+
1 2 3
123+
{% endhighlight %}
124+
<h2 id="7">Vector Fields</h2><p>Vector fields on the rotation group are functions that maps any rotation to an tangent vector. An important example is the gradient of an <code class="language-plaintext highlighter-rouge"><a href="SO3Fun.SO3Fun.html">SO3Fun</a></code>.</p><p>Hence any vector field has again a left and a right representation.</p>
125+
{% highlight matlab %}
126+
F = SO3Fun.dubna;
127+
F.SS = specimenSymmetry;
128+
%F = SO3FunHarmonic(F);
129+
rot = rotation.rand(3);
130+
131+
% left gradient in rot
132+
F.grad(rot)
133+
134+
% right gradient in rot
135+
inv(rot).*F.grad(rot)
136+
F.grad(rot,'right')
137+
{% endhighlight %}
138+
139+
{% highlight plaintext %}
140+
ans = SO3TangentVector
141+
size: 3 x 1
142+
TagentSpace: left
143+
x y z
144+
-0.165707 -0.146911 0.753701
145+
-3.10667 -0.548756 4.87704
146+
7.05267 -10.4397 5.58295
147+
148+
ans = vector3d
149+
size: 3 x 1
150+
x y z
151+
-0.755162 -0.0609238 -0.207665
152+
1.31834 -5.17006 2.29576
153+
10.6387 -8.30365 -2.78625
154+
155+
ans = SO3TangentVector
156+
size: 3 x 1
157+
TagentSpace: right
158+
x y z
159+
-0.75519 -0.060939 -0.207677
160+
1.31837 -5.17007 2.29575
161+
10.6389 -8.30395 -2.78651
162+
{% endhighlight %}
163+
<p>The gradient can also computed as function, i.e. as <a href="SO3VectorField.SO3VectorField.html">SO3VectorField</a>, which internal is an 3 dimensional <a href="SO3Fun.SO3Fun.html">SO3Fun</a>.</p>
164+
{% highlight matlab %}
165+
GL = F.grad
166+
GR = F.grad('right')
167+
168+
GL.eval(rot)
169+
GR.eval(rot)
170+
{% endhighlight %}
171+
172+
{% highlight plaintext %}
173+
GL = SO3VectorFieldHarmonic (Quartz → xyz)
174+
bandwidth: 48
175+
176+
177+
GR = SO3VectorFieldHandle (Quartz → xyz)
178+
tangent space: right
179+
180+
181+
ans = SO3TangentVector
182+
size: 3 x 1
183+
TagentSpace: left
184+
x y z
185+
-0.167735 -0.14833 0.756079
186+
-3.11199 -0.548966 4.88006
187+
7.05963 -10.4417 5.579
188+
189+
ans = SO3TangentVector
190+
size: 3 x 1
191+
TagentSpace: right
192+
x y z
193+
-0.75519 -0.060939 -0.207677
194+
1.31837 -5.17007 2.29575
195+
10.6389 -8.30395 -2.78651
196+
{% endhighlight %}
197+
<p>Again we are able to change the tangent space</p>
198+
{% highlight matlab %}
199+
left(GL)
200+
right(GR)
201+
{% endhighlight %}
202+
203+
{% highlight plaintext %}
204+
ans = SO3VectorFieldHarmonic (Quartz → xyz)
205+
bandwidth: 48
206+
207+
208+
ans = SO3VectorFieldHandle (Quartz → xyz)
209+
tangent space: right
210+
{% endhighlight %}
211+
<p>Note that the symmetries do not work in the same way as for <a href="SO3Fun.SO3Fun.html">SO3Fun</a>'s. Dependent from the choosed tangent space representation (left/right) one of the symmetries has other properties.</p><p>In case of right tangent space the evaluation in symmetric orientations only make sense w.r.t. the left symmetry. In case of left tangent space otherwise.</p>
212+
{% highlight matlab %}
213+
ori = orientation.rand(GL.CS,GL.SS)
214+
GR.eval(ori.symmetrise)
215+
GL.eval(ori.symmetrise)
216+
{% endhighlight %}
217+
218+
{% highlight plaintext %}
219+
ori = orientation (Quartz → xyz)
220+
221+
Bunge Euler angles in degree
222+
phi1 Phi phi2
223+
348.732 67.3017 199.518
224+
225+
226+
ans = SO3TangentVector
227+
size: 6 x 1
228+
TagentSpace: right
229+
x y z
230+
-0.237325 -2.49064 0.378127
231+
2.03829 1.45084 -0.378127
232+
-2.03829 1.45084 0.378127
233+
0.237325 -2.49064 -0.378127
234+
2.27562 1.03978 0.378127
235+
-2.27562 1.03978 -0.378127
236+
237+
ans = SO3TangentVector
238+
size: 6 x 1
239+
TagentSpace: left
240+
x y z
241+
-0.485747 0.695781 2.38237
242+
-0.485747 0.695781 2.38237
243+
-0.485747 0.695781 2.38237
244+
-0.485747 0.695781 2.38237
245+
-0.485747 0.695781 2.38237
246+
-0.485747 0.695781 2.38237
247+
{% endhighlight %}
248+
</div></body></html>

0 commit comments

Comments
 (0)