4: 2015-03-24 (火) 01:11:09 osinko |
5: 2015-03-24 (火) 04:24:02 osinko |
| | | |
| 三角関数、sin(サイン:正弦:せいげん)、cos(コサイン:余弦:よげん)、tan(タンジェント:正接:せいせつ)は、この各辺の長さを比で表すので三角比と呼ばれる | | 三角関数、sin(サイン:正弦:せいげん)、cos(コサイン:余弦:よげん)、tan(タンジェント:正接:せいせつ)は、この各辺の長さを比で表すので三角比と呼ばれる |
- | \(\sin { \theta } =\frac { 対辺 }{ 斜辺 } \quad ,\quad \cos { \theta } =\frac { 隣辺 }{ 斜辺 } \quad ,\quad \tan { \theta } =\frac { 対辺 }{ 隣辺 } \) | + | \(\sin { \theta } =\frac { 対辺 }{ 斜辺 } \quad ,\quad \cos { \theta } =\frac { 隣辺 }{ 斜辺 } \quad ,\tan { \theta } =\frac { \sin { \theta } }{ \cos { \theta } } =\frac { 対辺 }{ 隣辺} \) |
| この分数の関係式は頭文字の英語の筆記体の書き順で憶えると良い。分母のほうから辺の長さを割り当てる | | この分数の関係式は頭文字の英語の筆記体の書き順で憶えると良い。分母のほうから辺の長さを割り当てる |
| &font(Red){sin,cosは斜辺が母(分母)と憶える}; | | &font(Red){sin,cosは斜辺が母(分母)と憶える}; |
| 三角関数では角の大きさを測る引数に弧の長さの実数であるラジアンを利用する。日本人が日常で角度を測る際、分度器などで使う°はオイラー角(EulerAngles)と呼ばれる単位値であり実数ではない(メートルやキログラム等の単位値と同類) | | 三角関数では角の大きさを測る引数に弧の長さの実数であるラジアンを利用する。日本人が日常で角度を測る際、分度器などで使う°はオイラー角(EulerAngles)と呼ばれる単位値であり実数ではない(メートルやキログラム等の単位値と同類) |
| 1回転 = 360° = \(2\pi\) | | 1回転 = 360° = \(2\pi\) |
- | 通常、角はギリシャ文字θ(シータ)を用いて表される。aを°によるオイラー角度とするとラジアンを求める式は以下になる | + | 通常、角はギリシャ文字θ(シータ)を用いて表される。aを°によるオイラー角度とするとラジアンを求める単位変換式は以下になる |
| &ref(78feedc804f38212694e84d9d5210330.png); | | &ref(78feedc804f38212694e84d9d5210330.png); |
| 基本的にLの長さによる&font(Red){単位の無い実数となり y=cos(x)等の実数の関数式に対して比の値として扱える事になる};(だから三角関数に対してラジアンが利用される)。unityでMathf.sin関数に喰わせる引数もラジアンでありオイラー角ではないので注意。また相互変換には上記の式を利用すると便利だが\(\frac { \pi }{ 180 } \)は定数なのでunityには[[Mathf.Deg2Rad:http://docs.unity3d.com/ja/current/ScriptReference/Mathf.Deg2Rad.html]]などの専用のプロパティが用意されている | | 基本的にLの長さによる&font(Red){単位の無い実数となり y=cos(x)等の実数の関数式に対して比の値として扱える事になる};(だから三角関数に対してラジアンが利用される)。unityでMathf.sin関数に喰わせる引数もラジアンでありオイラー角ではないので注意。また相互変換には上記の式を利用すると便利だが\(\frac { \pi }{ 180 } \)は定数なのでunityには[[Mathf.Deg2Rad:http://docs.unity3d.com/ja/current/ScriptReference/Mathf.Deg2Rad.html]]などの専用のプロパティが用意されている |
| この実際の値の動きを視覚的に確認できるプログラムを作りました。unity_webプレーヤーで実際に触って挙動を確認できます。ご参考にどうぞ | | この実際の値の動きを視覚的に確認できるプログラムを作りました。unity_webプレーヤーで実際に触って挙動を確認できます。ご参考にどうぞ |
| [[三角関数プレーヤー_for_Unity:https://dl.dropboxusercontent.com/u/87271864/Math_sincosCurve/Math_sincosCurve.html]] | | [[三角関数プレーヤー_for_Unity:https://dl.dropboxusercontent.com/u/87271864/Math_sincosCurve/Math_sincosCurve.html]] |
| + | #code(csharp){{ |
| + | using UnityEngine; |
| + | using System.Collections; |
| + | |
| + | public class trigon2 : MonoBehaviour |
| + | { |
| + | void Start () |
| + | { |
| + | float x = Mathf.Cos (60 * Mathf.Deg2Rad); |
| + | float y = Mathf.Sin (60 * Mathf.Deg2Rad); |
| + | print (Mathf.Pow (x, 2) + Mathf.Pow (y, 2)); //三平方の定理の効用が確認できる |
| + | } |
| + | } |
| + | }} |
| | | |
| **負角、余角の公式 [#s9eafcd0] | | **負角、余角の公式 [#s9eafcd0] |
| ※unityのMathfクラスsin,cos関数ではマイナスの引数でも上記の公式を内部で処理し正確に値を算出します | | ※unityのMathfクラスsin,cos関数ではマイナスの引数でも上記の公式を内部で処理し正確に値を算出します |
| | | |
- | **atan [#y3e00982] | + | **atan(アークタンジェント:逆正接) [#zbc175fe] |
| + | atan は tan の逆関数になる(つまり傾きから角度を得る)。傾きはわかっているが角度が判らない時に使うと便利。ゲームのコードでは機能的に利用される機会が多い。返り値はラジアン角θとなる |
| + | \(\tan { \theta } =\frac { \sin { \theta } }{ \cos { \theta } } =\frac { y }{ x } \quad \quad \Leftrightarrow \quad \quad \arctan { \left( \frac { y }{ x } \right) } =\theta \) |
| + | arctanは幾つかの表現方法があり\(\arctan { \left( \frac { y }{ x } \right) }\) も\(\tan ^{ -1 }{ \left( \frac { y }{ x } \right) } \)も同じ意味となる |
| + | unityのコードでは[[Atan:http://docs.unity3d.com/ja/current/ScriptReference/Mathf.Atan.html]]や[[Atan2:http://docs.unity3d.com/ja/current/ScriptReference/Mathf.Atan2.html]]で表される |
| | | |
- | atan(アークタンジェント:逆正接) | + | <unityのコード例> |
- | atan は tan の逆関数になる(つまり傾きから角度を得る)。&color(#990000){atanを利用する事により内角θを求める事が出来る}。角度が判らない時に使うと便利 | + | #code(csharp){{ |
- | 引数はtanθ=(sinθ/cosθ)を渡す。返り値はラジアン角θとなる | + | |
- | &ref(daum_equation_1412255954447.png) | + | |
- | | + | |
- | <サンプルコード> | + | |
| using UnityEngine; | | using UnityEngine; |
| using System.Collections; | | using System.Collections; |
| } | | } |
| } | | } |
| + | }} |
| | | |
| + | #hr |
| 出力 | | 出力 |
- | | |
| 0.8660254 | | 0.8660254 |
| 0.5 | | 0.5 |
| 30 | | 30 |
| 30 | | 30 |
- | | + | #hr |
- | この場合のvecは正規化が必要ない(引数にtanθを渡すという事は比だから) | + | この場合のvecは正規化の必要はない(引数にtanθを渡すという事は比だから) |
| | | |
| **有名なsin,cos値 [#xc1bbc15] | | **有名なsin,cos値 [#xc1bbc15] |
| |cos(60°)|√0.25= 0.5|sin(60°)|√0.75 = 0.866~| | | |cos(60°)|√0.25= 0.5|sin(60°)|√0.75 = 0.866~| |
| |cos(90°)|0|sin(90°)|1| | | |cos(90°)|0|sin(90°)|1| |
- | オイラー角45度を境にsin,cosの関係が対称になっている | + | 45°を境にsin,cosの関係が対称になっている |
| | | |
| 上の表から以下の式で三平方の定理が成立している事が確認できる | | 上の表から以下の式で三平方の定理が成立している事が確認できる |
- | cos(30°)^2 + sin(30°)^2 = 1 | + | \(\cos ^{ 2 }{ (30) } +\sin ^{ 2 }{ (30) } =1\quad \quad \rightarrow \quad { \quad 0.866 }...^{ 2 }+{ 0.5 }^{ 2 }=1\) |
- | 0.866^2 + 0.5^2 = 1 | + | |
- | 0.75 + 0.25 = 1 | + | |
| | | |
| **三角関数の表記注意点 [#t9eda5be] | | **三角関数の表記注意点 [#t9eda5be] |