回答編集履歴

2

例を追記

2020/04/28 02:03

投稿

fana
fana

スコア11713

test CHANGED
@@ -25,3 +25,75 @@
25
25
 
26
26
 
27
27
  という形で成分の数だけ式が並びます.これを纏めて書いた表記が行列を使った式であるというだけです.
28
+
29
+
30
+
31
+ 例えば2次元の世界で(x,y)を「拡大して,回転して,平行移動する」という計算は,成分毎に書いてみれば
32
+
33
+
34
+
35
+ 1. 拡大:s倍する
36
+
37
+ x' = s * x
38
+
39
+ y' = s * y
40
+
41
+ 2. 回転:(原点まわりに)θだけ回転する
42
+
43
+ x'' = x'*cosθ - y'*sinθ
44
+
45
+ y'' = x'*sinθ + y'*cosθ
46
+
47
+ 3. 平行移動:(tx,ty)だけ移動
48
+
49
+ x結果 = x'' + tx
50
+
51
+ y結果 = y'' + ty
52
+
53
+
54
+
55
+ 上記を纏めると,
56
+
57
+
58
+
59
+ x結果 = x*(s*cosθ) - y*(s*sinθ) + tx
60
+
61
+ y結果 = x(*s*sinθ) + y*(s*cosθ) + ty
62
+
63
+
64
+
65
+ となります.
66
+
67
+ これを行列で書いたら以下になる.
68
+
69
+ 元の座標(を表すベクトル)に,拡大縮小するための行列をかけて,それに回転するための行列をかけて,それに平行移動するための行列をかける.
70
+
71
+ ```
72
+
73
+ [x結果] [1 0 tx][cosθ -sinθ 0][s 0 0][x]
74
+
75
+ [x結果] = [0 1 tx][sinθ cosθ 0][0 s 0][y]
76
+
77
+ [ 1 ] [0 0 1 ][ 0 0 1][0 0 1][1]
78
+
79
+ ```
80
+
81
+
82
+
83
+ 右辺の3つの行列の積を計算してまとめれば
84
+
85
+
86
+
87
+ ```
88
+
89
+ [x結果] [s*cosθ -s*sinθ tx][x]
90
+
91
+ [x結果] = [s*sinθ s*cosθ ty][y]
92
+
93
+ [ 1 ] [ 0 0 1 ][1]
94
+
95
+ ```
96
+
97
+
98
+
99
+ ですね.成分毎に書いた式と比較すれば「まぁ同じ内容だな」とわかるでしょう.

1

追記

2020/04/28 02:03

投稿

fana
fana

スコア11713

test CHANGED
@@ -5,3 +5,23 @@
5
5
  一度,行列を使わない世界で(成分毎に書き下して)これらの変換を扱う式を書いてみてはいかがでしょうか.
6
6
 
7
7
  で,行列で書いた場合と比較して,同じことをしているのだという対応を取ってみる感じで.
8
+
9
+
10
+
11
+ ---
12
+
13
+
14
+
15
+ 成分毎に式を書くと
16
+
17
+
18
+
19
+ * x = ...
20
+
21
+ * y = ...
22
+
23
+ * z = ...
24
+
25
+
26
+
27
+ という形で成分の数だけ式が並びます.これを纏めて書いた表記が行列を使った式であるというだけです.