====== 代数・幾何 ====== ===== 概要 ===== * プログラミングで使いそうな代数・幾何の備忘録 * Python および numpy で紹介 ===== 三角関数 ===== * 円関数ともいう。 * 円の中の半径と X 軸、円との接点からの垂線で構成される三角形の距離的な関数 (一部の長さや角度が分かれば、その他の長さや角度が分かる)。 * というか、円で考えたほうが三角関数は実は理解しやすい。 * $\sin \theta$ (サイン; 正弦) * $\sin \theta = \frac{y} {r}$ * 半径 (直角三角形の斜めの辺) の長さ $r$ と角度 $\theta$ と 高さ $y$ の関係。 * たいていは、半径と角度から、高さを求める時に使う。 * $\cos \theta$ (コサイン; 余弦) * $cos \theta = \frac {x} {r}$ * 半径 (直角三角形の斜めの辺) の長さ $r$ と角度 $\theta$ と幅 $x$ の関係。 * たいていは、半径と角度から、幅を求める時に使う。 * $\tan \theta = \frac {y} {x}$ (タンジェント; 正接) * 角度 $\theta$ と幅 $x$、高さ $y$ の関係。 * $x$ (幅) と $y$ (高さ) と角度の関係。 * 二次関数の傾きと同じ定義。 ===== 内積 ===== * ベクトル同士の積のうちの一つ。 * 結果はスカラーになる。 * ベクトル A と B の内積は、ベクトル B のベクトル A 上の投影したときの距離。 * 結果が 0 の時、2 つのベクトルは垂直に交わる ()。 * 使いどころ * ベクトル (あるいは、直線を表現したベクトル) が垂直に交わっているかの判定に使う。 * 内積の関係から、2 つのベクトル間 ($\vec{u}$ と $\vec{v}$) の角度算出に使う。\\ $$\begin{eqnarray} \cos \theta &=& \frac {\vec{u} \cdot \vec{v}} {\|\vec{u}\| \| \vec{v} \|} \\ \theta &=& \arccos \left( \frac {\vec{u} \cdot \vec{v}} {\|\vec{u}\| \| \vec{v} \|} \right) \end{eqnarray}$$\\ * $\vec{u} \cdot \vec{v}$: $\vec{u}$ と $\vec{v}$ の内積 * $\|\vec{u}\|$: $\vec{u}$ のベクトルの大きさ (長さ; スカラー) * $\|\vec{v}\|$: $\vec{v}$ のベクトルの大きさ (長さ; スカラー) * ただし、第二象限までしか算出できない (0〜180 度) * 第二象限以上を算出する場合は、外積を使って、ベクトル $\vec{u}$ と $\vec{v}$ の関係 (どちらを基準に時計回りか、反時計回りか) を調べて、0〜180 度 (第一、第二象限) と -180〜0 度 (第三、第四象限; 外積の Z 成分が負) として実装する。 * Python での実装\\ import numpy as np u = np.array([1,0,0]) v = np.array([1,1,0]) cos = np.clip(np.dot(u, v) / (np.linalg.norm(u) * np.linalg.norm(v)), -1.0, 1.0) theta = np.arccos(cos) if np.cross(u, v)[2] < 0: theta *= -1 deg = np.rad2deg(theta) print(deg) * 参考サイト: [[https://www.studyplus.jp/467|【内積とは】ベクトルの内積の意味や公式・計算方法を知って大学合格へ! | Studyplus(スタディプラス)]] ===== 外積 ===== * ベクトル同士の積のうちの一つ。 * 結果はベクトルになる。 * 3 次元ベクトルの外積は、平面に対する法線ベクトルになる。 * 外積の Z 成分が正なのか負なのかによって、ベクトルの関係が分かる ($\vec{u}$ と $\vec{v}$ の外積で、Z 成分が負の場合、$\vec{v}$ は $\vec{u}$ の右側 (反時計回り) にある)。 * この関係は右ねじの法則で覚えると良い (2 つのベクトルの回転中心に握った右手を置いた際、指の付け根が外積の最初のベクトル側 ($\vec{u}$)、指先が次のベクトル側 ($\vec{v}$) になり、指の向きが回転方向、親指の向きが Z 成分になる。)。 * 使いどころ * 平面の法線ベクトルの生成。 * 角度算出の際の第三、第四象限の判定。 * 参考サイト: [[https://atarimae.biz/archives/23716|外積とは何か。ベクトルの外積の定義・意味・大きさについて|アタリマエ!]]