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 を使うと楽に実装することができます。