LoginSignup
1
2

More than 5 years have passed since last update.

球面の法線ベクトルの計算

Last updated at Posted at 2016-01-24

あまり使うことはなさそうですが、極座標において中心を減点とする球面の法線ベクトルを推定し、任意のベクトル(この場合は直交座標系で(0,0,1)のベクトルとのなす角を計算する手順を示します。

1 法線ベクトルの計算

$r,\theta,\varphi$で定義される球における位置ベクトル$\mathbf{x}$
の法線ベクトルは下記の様に表される。

 \mathbf{x} \equiv  r\left(\sin\theta\cos\varphi,\ \sin\theta\sin\varphi,\ \cos\theta\right)\\
\mathbf{n}\left(\mathbf{x}\right)=\mathscr{N}\left[-\frac{\partial\mathbf{x}}{\partial r}\right]    =   \mathscr{N}\left[-\left(\sin\theta\cos\varphi,\ \sin\theta\sin\varphi,\ \cos\theta\right)\right]

ただし、$\mathscr{N}\left[\right]$
は括弧内を規格化することを意味する。

2 xとyの値からz軸を計算

$z$が未知で$x,y,r,\theta,\varphi$が既知の場合、下記の関係

x   =   r\sin\theta\cos\varphi,\\
y   =   r\sin\theta\sin\varphi,\\
z   =   r\cos\theta.\\

から、z の座標が以下の様に求まる。

z=r\cos\theta   =   \pm r\sqrt{1-\sin^{2}\theta},\\
    =   \pm r\sqrt{1-\left(\frac{x}{r\cos\varphi}\right)^{2}},\\
\frac{x}{r\cos\varphi}  =   \sin\theta,\\
\sin\theta  =   \begin{cases}
\frac{x}{r\cos\varphi} & y=0\\
\frac{y}{r\sin\varphi} & x=0,\ {\rm otherwise}
\end{cases}.

3 角度の計算

球の平面の法線ベクトル$\mathbf{n}$と、カメラの視線ベクトル$\left(0,0,1\right)$とのなす角$\theta$は以下ので示される。

\theta  =   \arccos\left(\frac{\mathbf{n}\cdot\left(0,0,1\right)}{\left|\mathbf{n}\right|\left|\left(0,0,1\right)\right|}\right)
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2