読者です 読者をやめる 読者になる 読者になる

Unityと数学の学習帳

Unityと数学の同時学習を目的としたブログ

ゲームで使う数式の原理

座標変換

X軸に関して以下の式を利用する。xが矩形の横幅、x'が座標。Y軸やZ軸に関しても同様の式を利用すると良い
\frac { x'-\frac { x }{ 2 }  }{ \frac { x }{ 2 }  } \quad =\quad \left( x'-\frac { x }{ 2 }  \right) \times \frac { 1 }{ \frac { x }{ 2 }  } \quad =\quad \left( x'-\frac { x }{ 2 }  \right) \times 1\div \frac { x }{ 2 } \quad =\quad \left( x'-\frac { x }{ 2 }  \right) \times \frac { 2 }{ x } \quad =\quad \frac { 2x' }{ x } -\frac { 2x }{ 2x } \quad =\quad \frac { 2x' }{ x } -1



P\left( r,\theta ,\phi  \right) \quad \Leftrightarrow \quad \left( r\sin { \theta \cos { \phi  }  } ,\quad r\cos { \theta \quad ,\quad r\sin { \theta \sin { \phi  }  }  }  \right)

「ゲームアプリの数学」P42の球面座標系とデカルト座標の変換式の考え方
f:id:cqbosinko:20170411155030p:plain

<unityで利用する場合>

球面座標からデカルト座標にする。半径r、方位角\theta、仰角\phiとして
P\left( r,\theta ,\phi  \right) \quad \longmapsto \quad \left( r\cos { \phi  } \sin { \theta  } \quad ,\quad r\sin { \phi  } \quad ,\quad r\cos { \phi  } \cos { \theta  }  \right)

デカルト座標から球面座標にする
r=\sqrt { { x }^{ 2 }+{ y }^{ 2 }+{ z }^{ 2 } } \\ \theta =\arctan { \frac { x }{ z }  } \\ \phi =\arcsin { \frac { y }{ r }  }

f:id:cqbosinko:20170414010533p:plain

簡単な使用例:
P\left( 1,-60,30 \right) \quad \longmapsto \quad \left( 1\times \cos { (30) } \times \sin { (-60) } \quad ,\quad 1\times \sin { (30) } \quad ,\quad 1\times \cos { (30) } \times \cos { (-60) }  \right) \quad =\quad \left( -0.75\quad ,\quad 0.5\quad ,\quad 0.433... \right)