Circular 型

Siv3D Advent Calendar 2013, 24 日目の記事です。
今日は平面極座標を表現する Circular 型を紹介します。

Circular 型のメンバ r, theta はそれぞれ平面極座標の動径 r と偏角 θ に対応します。
極座標から直交座標への変換は、Siv3D では次の通り行われます。

Circular::operator Vec2() const
{
	return{ sin(theta)*r, -cos(theta)*r };
}

簡単なプログラムで Circular のはたらきを確かめてみましょう。

# include <Siv3D.hpp>

void Main()
{
	const Vec2 center = Window::Size() / 2;

	while (System::Update())
	{
		Circle(center, 5).draw(Palette::Red);

		for (int i = 0; i < 80; ++i)
		{
			const Vec2 pos = center + Circular(10 + i * 3, Radians(i * 20));

			Circle(pos, (i + 8)*0.2).draw(HSV(i*20));
		}
	}
}

Circular 型を使ったプログラムの例は サンプル | 時計 があります。

CodeIQ の Siv3D 問題 も Circular を使うと楽に実装することができます。