以下の記事にある、ソースのadvanceの関数ないの計算式が

理解できなかったので解説お願いします。
http://omiya6048.hatenablog.com/entry/2013/06/13/223946

上記URLに↓のような記述があるかと思います。
$coordinate->x = $coordinate->x + cos($degress * M_PI / 180) * $value;
$coordinate->y = $coordinate->y + sin($degress * M_PI / 180) * $value;
それぞれ、x座標とy座標の位置をだしているのかと思いますが、
この数式の解説が欲しいです。
どうぞよろしくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/12/01 17:01:33
  • 終了:2013/12/08 17:05:04

回答(1件)

id:Lhankor_Mhy No.1

Lhankor_Mhy回答回数779ベストアンサー獲得回数2312013/12/01 17:38:20

ポイント200pt
$degress * M_PI / 180

 この部分は度数からラジアン角への変換です。公式みたいなものなので覚えたり覚えなかったりしてください。
ラジアン - Wikipedia
 

cos($degress * M_PI / 180)

 cosは三角関数です。
三角関数 - Wikipedia
 wikipediaの直角三角形の図で考えると、cos(θ)で角度θ斜辺h=1の時のb、つまり原点から角度θで距離1進んだ時のx座標を求めることができます。
 

cos($degress * M_PI / 180) * $value

 単純に積を取っていますから、原点から角度($degress * M_PI / 180)で距離$valueを進んだ時のx座標を求めることができます。
 

$coordinate->x + cos($degress * M_PI / 180) * $value

 もともとの座標に加算してます。つまり座標$coordinateから角度($degress * M_PI / 180)で距離$valueを進んだ時のx座標を求めることができます。
 

$coordinate->x = $coordinate->x + cos($degress * M_PI / 180) * $value;
$coordinate->y = $coordinate->y + sin($degress * M_PI / 180) * $value;

 y座標についても同様です。
 以上です。

  • id:windofjuly
    うぃんど 2013/12/01 17:42:46
    $degressは __construct で下記のように初期化され、
    例題では一周360度÷20カテゴリで18という値が入ります。
    >>
    $degress = 360 / count($this->category);
    <<
    ちなみに、
    コンストラクタはクラスが呼び出された時点で発動する特別な関数です。
    http://php.net/manual/ja/language.oop5.decon.php

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません