【線形代数】座標

# ０.はじめに
大学で線形代数の講義を受講している者です。
ざっくりと計算方法を個人的な備忘録としてまとめております。

##### 関連学習
[【線形代数】ベクトル](https://qiita.com/AkihideKato/items/f581ee500782b2272c0a)
[【線形代数】行列](https://qiita.com/AkihideKato/items/7d92b048d5bd392389e8)
[【線形代数】連立方程式](https://qiita.com/AkihideKato/items/6ddd947e438c4fae77a6)
[【線形代数】線形空間・線形写像](https://qiita.com/AkihideKato/items/2f03f8a996372525db6d)
[【線形代数】座標](https://qiita.com/AkihideKato/items/cda674d9fcf3f1fc00ba)
[【線形代数】固有値・固有ベクトル](https://qiita.com/AkihideKato/items/42a6bd7eec6ca66085c8)

# 座標
ここでは平面座標、同時座標、空間の3つの観点から計算式を考える

## １．平面
### 平面移動
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
+
\begin{pmatrix}
t_x\\
t_y\\
\end{pmatrix}
```

### 拡大縮小
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\begin{pmatrix}
S_x & 0\\
0 & S_y\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
```

### 回転

反時計回りにΘ度回転させた時の座標(x',y')
時計回りの場合はΘをマイナスに変えて計算する	
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\begin{pmatrix}
\cos\Theta & -\sin\Theta\\
\sin\Theta & \cos\Theta\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
```

### 対称移動
直線y = axに対する対称移動
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\frac{1}{a^2+1}
\begin{pmatrix}
1-a^2 & 2a\\
2a & a^2-1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
```
軸ごとの対称移動
```math
x軸に対する対称移動
```
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\begin{pmatrix}
1 & 0\\
0 & -1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
```
```math
y軸に対する対称移動
```
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\begin{pmatrix}
-1 & 0\\
0 & 1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
```
```math
z軸に対する対称移動
```
```math
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}\,\,\, =
\begin{pmatrix}
-1 & 0\\
0 & -1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
\end{pmatrix}
```
参考：x軸に対する対称移動のイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581998/838b4060-e585-16df-d0f1-43d3945e0e01.png)

### 逆変換
```math
\begin{pmatrix}
x\\
y\\
\end{pmatrix}\,\,\, =A^⁻¹
\begin{pmatrix}
x'\\
y'\\
\end{pmatrix}
```

### 合成変換
通常の合成変換はg×f
合成変換の逆は(g×f)⁻¹となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581998/e005fb46-0292-5a8d-6c71-d64f5f4c0b89.png)

### 平面座標の応用
点Pを直線lの対称移動をしたい場合、3つの工程に分けて考える
- #### 1.直線を原点に移動させる
- #### 2.対称移動させる
- #### 3.原点に移動させた分戻す
こうすることで直線を利用した対称移動が可能となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581998/e4276e6b-5577-a1da-e4d1-9960b453e9f1.png)

## ２．同時座標
平面上の座標を列ベクトルとして表すもの
同時座標を用いることで平面上の座標移動を一次変換方式で表すことが可能
公式は平面座標に次元が増えたものなので比較的理解しやすい
### 平行移動
```math
\begin{pmatrix}
x'\\
y'\\
1
\end{pmatrix}\,\,\, =
\begin{pmatrix}
1 & 0 & t_x\\
0 & 1 & t_y\\
0 & 0 & 1\\
\end{pmatrix}
+
\begin{pmatrix}
x\\
y\\
1\\
\end{pmatrix}
```

### 拡大縮小
```math
\begin{pmatrix}
x'\\
y'\\
1
\end{pmatrix}\,\,\, =
\begin{pmatrix}
S_x & 0 & 0\\
0 & S_y & 0\\
0 & 0 & 1\\
\end{pmatrix}
+
\begin{pmatrix}
x\\
y\\
1\\
\end{pmatrix}
```

### 回転
```math
\begin{pmatrix}
x'\\
y'\\
1
\end{pmatrix}\,\,\, =
\begin{pmatrix}
\cos\Theta & -\sin\Theta & 0\\
\sin\Theta & \cos\Theta & 0\\
0 & 0 & 1\\
\end{pmatrix}
+
\begin{pmatrix}
x\\
y\\
1\\
\end{pmatrix}
```

### 対称移動
```math
\begin{pmatrix}
x'\\
y'\\
1
\end{pmatrix}\,\,\, =
\begin{pmatrix}
\cos2\Theta & \sin2\Theta & 0\\
\sin2\Theta & -\cos2\Theta & 0\\
0 & 0 & 1\\
\end{pmatrix}
+
\begin{pmatrix}
x\\
y\\
1\\
\end{pmatrix}
```

### 直線y = axに対しての対称移動
```math
\begin{pmatrix}
x'\\
y'\\
1
\end{pmatrix}\,\,\, =
\frac{1}{a^2+1}
\begin{pmatrix}
1-a^2 & 2a & 0\\
2a & a^2-1 & 0\\
0 & 0 & a^2+1\\
\end{pmatrix}
+
\begin{pmatrix}
x\\
y\\
1\\
\end{pmatrix}
```

## ３．空間上
### 平行移動
```math
\begin{pmatrix}
x'\\
y'\\
z'
\end{pmatrix}\,\,\, =
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}\,\,\, +
\begin{pmatrix}
t_x\\
t_y\\
t_z\\
\end{pmatrix}
```

### 拡大縮小
```math
\begin{pmatrix}
x'\\
y'\\
z'
\end{pmatrix}\,\,\, =
\begin{pmatrix}
S_x & 0 & 0\\
0 & S_y & 0\\
0 & 0 & S_z\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```

### 回転
Θごとに値を変えて利用する
```math
x軸回りの90°の回転移動の場合
```
```math
\begin{pmatrix}
x'\\
y'\\
z
\end{pmatrix}\,\,\, =
\begin{pmatrix}
1 & 0 & 0\\
0 & \cos90° & -\sin90°\\
0 & \sin90° & \cos90°\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```

```math
y軸回りの45°の回転移動の場合
```
```math
\begin{pmatrix}
x'\\
y'\\
z
\end{pmatrix}\,\,\, =
\begin{pmatrix}
\cos45° & 0 & \sin45°\\
0 & 1 & 0\\
-\sin45° & 0 & \cos45°\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```

```math
z軸回りの-90°の回転移動の場合
```
```math
\begin{pmatrix}
x'\\
y'\\
z
\end{pmatrix}\,\,\, =
\begin{pmatrix}
\cos(-90°) & -\sin(-90°) & 0\\
\sin(-90°) & \cos(-90°) & 0\\
0 & 0 & 1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```

### 対称移動
空間上の点の座標を列ベクトルx,y,zで表す場合、それぞれの兵権に対しての対称移動は以下となる
```math
xy平面に対しての対称移動
```
```math
\begin{pmatrix}
x'\\
y'\\
z
\end{pmatrix}\,\,\, =
\begin{pmatrix}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & -1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```

```math
yz平面に対しての対称移動
```
```math
\begin{pmatrix}
x'\\
y'\\
z
\end{pmatrix}\,\,\, =
\begin{pmatrix}
-1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```

```math
zx平面に対しての対称移動
```
```math
\begin{pmatrix}
x'\\
y'\\
z
\end{pmatrix}\,\,\, =
\begin{pmatrix}
1 & 0 & 0\\
0 & -1 & 0\\
0 & 0 & 1\\
\end{pmatrix}
\begin{pmatrix}
x\\
y\\
z\\
\end{pmatrix}
```