<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>いちばんやさしいゲームの作り方 &#187; radian</title>
	<atom:link href="http://www.game-create.com/archives/tag/radian/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>角度をラジアンに変換する</title>
		<link>http://www.game-create.com/archives/614</link>
		<comments>http://www.game-create.com/archives/614#comments</comments>
		<pubDate>Sun, 17 Aug 2008 23:28:17 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[radian]]></category>
		<category><![CDATA[数値]]></category>
		<category><![CDATA[数学]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=614</guid>
		<description><![CDATA[角度をラジアンに変換するためには、角度を 180 で除算してπと積算します。

C/C++ をはじめ、多くのプログラミング言語では角度をラジアンで指定します。これはなぜかというと角度が 360 度であることの根拠がわから [...]]]></description>
			<content:encoded><![CDATA[<p>角度をラジアンに変換するためには、角度を 180 で除算してπと積算します。</p>
<p><span id="more-614"></span></p>
<p>C/C++ をはじめ、多くのプログラミング言語では角度をラジアンで指定します。これはなぜかというと角度が 360 度であることの根拠がわからないためです（一応、歴史的根拠はあるそうです）。それに対してラジアンという単位は、その角度からなる弧の長さの比率ですので根拠が明確なのです。コンピュータはラジアンが大好きです。</p>
<p>しかし、根拠がどうとか、いちいち面倒なことを覚える必要はありません、ラジアンは次の式で求めることができます。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-prepro">#define </span><span class="hl-identifier">PI </span><span class="hl-number">3.141592</span><span class="hl-prepro">
</span><span class="hl-types">float </span><span class="hl-identifier">degree</span><span class="hl-default"> = </span><span class="hl-number">123</span><span class="hl-default">; </span><span class="hl-comment">// 123 度
</span><span class="hl-types">float </span><span class="hl-identifier">radian</span><span class="hl-default"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">degree</span><span class="hl-code"> / </span><span class="hl-number">180</span><span class="hl-brackets">)</span><span class="hl-default"> * </span><span class="hl-identifier">PI</span><span class="hl-default">; </span><span class="hl-comment">// 2.146754 …</span></pre></div></div>
<p>実際に計算してみるとわかるのですが、ラジアンは０度の時には０、 180 の時にはπになり、 360 度で２πになります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/614/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ある点からある点へ向かうための移動量を求める</title>
		<link>http://www.game-create.com/archives/154</link>
		<comments>http://www.game-create.com/archives/154#comments</comments>
		<pubDate>Thu, 22 Nov 2007 15:16:43 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[atan2]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cos]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[radian]]></category>
		<category><![CDATA[sin]]></category>
		<category><![CDATA[数学]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=154</guid>
		<description><![CDATA[ある点からある点へ向かうための移動量を求めるには atan2() 関数を使います。これはホーミング弾を作る場合などに使います。

まず、移動量を定義します。
const double speed = 8.0f; // ス [...]]]></description>
			<content:encoded><![CDATA[<p>ある点からある点へ向かうための移動量を求めるには atan2() 関数を使います。これはホーミング弾を作る場合などに使います。</p>
<p><span id="more-154"></span></p>
<p>まず、移動量を定義します。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre><span class="hl-types">const double </span><span class="hl-identifier">speed</span><span class="hl-default"> = </span><span class="hl-number">8.0</span><span class="hl-identifier">f</span><span class="hl-default">; </span><span class="hl-comment">// スピード（サンプル）</span></pre></div></div>
<p>次に、目的の座標と自分の座標との差を求めます。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-types">double </span><span class="hl-identifier">dx</span><span class="hl-default"> = </span><span class="hl-identifier">targetX</span><span class="hl-default"> - </span><span class="hl-identifier">fromX</span><span class="hl-default">;
</span><span class="hl-types">double </span><span class="hl-identifier">dy</span><span class="hl-default"> = </span><span class="hl-identifier">targetY</span><span class="hl-default"> - </span><span class="hl-identifier">fromY</span><span class="hl-default">;</span></pre></div></div>
<p>算出した差を atan2() 関数に食わせます。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre><span class="hl-types">double </span><span class="hl-identifier">radian</span><span class="hl-default"> = </span><span class="hl-identifier">atan2</span><span class="hl-brackets">(</span><span class="hl-identifier">dy</span><span class="hl-code">, </span><span class="hl-identifier">dx</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
<p>atan2() 関数の結果を cos() 関数と sin() 関数へ食わせて移動量を求めます。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-types">double </span><span class="hl-identifier">vectorX</span><span class="hl-default"> = </span><span class="hl-identifier">cos</span><span class="hl-brackets">(</span><span class="hl-identifier">radian</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-types">double </span><span class="hl-identifier">vectorY</span><span class="hl-default"> = </span><span class="hl-identifier">sin</span><span class="hl-brackets">(</span><span class="hl-identifier">radian</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
<p>cos() と sin() の結果は -1 ～ 1 の間になるため移動量で乗算します。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">vectorX</span><span class="hl-default"> = </span><span class="hl-identifier">vectorX</span><span class="hl-default"> * </span><span class="hl-identifier">speed</span><span class="hl-default">;
</span><span class="hl-identifier">vectorY</span><span class="hl-default"> = </span><span class="hl-identifier">vectorY</span><span class="hl-default"> * </span><span class="hl-identifier">speed</span><span class="hl-default">;</span></pre></div></div>
<p>このときの vectorX と vectorY が、ある点からある点へ向かって speed の分だけ移動するための移動量になります。 vectorX がX座標の移動量、 vectorY がY座標の移動量です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/154/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>角度からX座標とY座標の移動量を計算する</title>
		<link>http://www.game-create.com/archives/55</link>
		<comments>http://www.game-create.com/archives/55#comments</comments>
		<pubDate>Wed, 29 Aug 2007 04:55:32 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[cos]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[radian]]></category>
		<category><![CDATA[sin]]></category>
		<category><![CDATA[アルゴリズム]]></category>
		<category><![CDATA[数学]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=55</guid>
		<description><![CDATA[角度からX座標とY座標の移動量を計算するのは誰もがいつかは直面する課題です。現在のカリキュラムでは三角法を履修しない学校も多いため掲載することにしました（ゆとり？）。

まず円周率を定義します。
const double [...]]]></description>
			<content:encoded><![CDATA[<p>角度からX座標とY座標の移動量を計算するのは誰もがいつかは直面する課題です。現在のカリキュラムでは三角法を履修しない学校も多いため掲載することにしました（ゆとり？）。</p>
<p><span id="more-55"></span></p>
<p>まず円周率を定義します。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre><span class="hl-types">const double </span><span class="hl-identifier">PI</span><span class="hl-default"> = </span><span class="hl-number">3.141592653589793</span><span class="hl-identifier">f</span><span class="hl-default">;</span></pre></div></div>
<p>次に角度とスピードを決定します。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-types">double </span><span class="hl-identifier">degree</span><span class="hl-default"> = </span><span class="hl-number">45.0</span><span class="hl-identifier">f</span><span class="hl-default">; </span><span class="hl-comment">// 角度（サンプル）
</span><span class="hl-types">double </span><span class="hl-identifier">speed</span><span class="hl-default"> = </span><span class="hl-number">8.0</span><span class="hl-identifier">f</span><span class="hl-default">; </span><span class="hl-comment">// スピード（サンプル）</span></pre></div></div>
<p>次に角度をラジアンという単位に変換します。初級ゲームプログラミングであれば内容を理解する必要はありません。この行程が必要なんだなぁ…、程度で問題ありません。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre><span class="hl-types">double </span><span class="hl-identifier">radian</span><span class="hl-default"> = </span><span class="hl-brackets">(</span><span class="hl-identifier">degree</span><span class="hl-code"> * </span><span class="hl-identifier">PI</span><span class="hl-brackets">)</span><span class="hl-default"> / </span><span class="hl-number">180.0</span><span class="hl-identifier">f</span><span class="hl-default">;</span></pre></div></div>
<p>次に三角関数に食わせて結果の値を取得します。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-types">double </span><span class="hl-identifier">vectorX</span><span class="hl-default"> =   </span><span class="hl-identifier">cos</span><span class="hl-brackets">(</span><span class="hl-identifier">radian</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-types">double </span><span class="hl-identifier">vectorY</span><span class="hl-default"> = -</span><span class="hl-brackets">(</span><span class="hl-identifier">sin</span><span class="hl-brackets">(</span><span class="hl-identifier">radian</span><span class="hl-brackets">))</span><span class="hl-default">; </span><span class="hl-comment">// Y 座標の原点が左下の場合は符号を反転してください。</span></pre></div></div>
<p>実は sin() と cos() の結果は -1 ～ 1 までの数値になるため、最後に移動量で乗算して完了です。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">vectorX</span><span class="hl-default"> = </span><span class="hl-identifier">vectorX</span><span class="hl-default"> * </span><span class="hl-identifier">speed</span><span class="hl-default">;
</span><span class="hl-identifier">vectorY</span><span class="hl-default"> = </span><span class="hl-identifier">vectorY</span><span class="hl-default"> * </span><span class="hl-identifier">speed</span><span class="hl-default">;</span></pre></div></div>
<p>vectorX がX座標の移動量、 vectorY がY座標の移動量です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/55/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

