3dayboy

技術備忘録

対象物が視野内にあるか否かを判定する

観測者が対象物を見るとき、視野 (FOV: Field of View) の内側にあるか否かを判定する。

パラメータ

  • 観測者の視野角  0 \leq \phi \leq 360^\circ
  • 観測者の方向ベクトル  \vec{v} (向きのみに着目するので、大きさは何でもいい)
  • 観測者の位置ベクトル  \vec{x}
  • 対象物の位置ベクトル  \vec{x}'

f:id:sawa2d2:20191018130926p:plain

判定方法

次の式で求まる:

 
{\rm isInFOV}(\phi, \vec{v}, \vec{x}, \vec{x}') = 
\begin{cases}
  \rm{true} & (\cos\frac{\phi}{2} \leq \cos \theta \leq 1) \\
  \rm{false} & ({\rm otherwise})
\end{cases}, \displaystyle \cos \theta = \frac{\vec{v}\cdot (\vec{x}'-\vec{x})}{|\vec{v}||\vec{x}'-\vec{x}|}

f:id:sawa2d2:20191018131001p:plain

 cos\frac{\phi}{2} の値が  -1 なら全方面を知覚、 0 なら前方  180^\circ を知覚、 1 なら前方にまっすぐ伸びる直線上にあるものを知覚。