代数・幾何

代数・幾何

  • プログラミングで使いそうな代数・幾何の備忘録
  • 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)
  • ベクトル同士の積のうちの一つ。
  • 結果はベクトルになる。
    • 3 次元ベクトルの外積は、平面に対する法線ベクトルになる。
    • 外積の Z 成分が正なのか負なのかによって、ベクトルの関係が分かる ($\vec{u}$ と $\vec{v}$ の外積で、Z 成分が負の場合、$\vec{v}$ は $\vec{u}$ の右側 (反時計回り) にある)。
      • この関係は右ねじの法則で覚えると良い (2 つのベクトルの回転中心に握った右手を置いた際、指の付け根が外積の最初のベクトル側 ($\vec{u}$)、指先が次のベクトル側 ($\vec{v}$) になり、指の向きが回転方向、親指の向きが Z 成分になる。)。
  • 使いどころ
    • 平面の法線ベクトルの生成。
    • 角度算出の際の第三、第四象限の判定。
  • 代数・幾何.txt
  • 最終更新: 2021/12/09 18:57
  • by mumeiyamibito