パップス・チェーン(1)
パップス・チェーンの話に入る前に、その前提であるアルベロスとはどういうものなのかということを確認しておきます。
と言っても、図を見たままですが……
まず直径が 1 の大半円を置きます(以下 A とします)。
その内部に2つの小半円を、お互いに相手の外側で、相手および大半円と1点で接するように置きます(以下、左側の半円を B、右側の半円を C とします)。
B の直径を r とします(自動的に、C の直径は 1 – r となります)。
半径じゃなくて直径、というところがミソでしょうか。
一般的に幾何学における単位円は半径が 1 なので、ぼんやりしてると間違えるポイント。
A、B、C に1点で接する正円を置きます。これを d1 とします。
次に A、B 、d1 に1点で接する正円を置きます。これを d2 とします。
さらに A、B 、d2 に1点で接する正円を置きます。これを d3 とします。
以下、同様に無限に円を置くことができますが、これらの円群を dn と表記するとき、中心座標と半径は、以下の公式で求めることができます。
xn = r * (1 + r) / (2 * (n^2 * (1 - r)^2 + r))
yn = n * r * (1 - r) / (n^2 * (1 - r)^2 + r)
rn = r * (1 - r) / (2 * (n^2 * (1 - r)^2 + r))
なお、原点o(0, 0) は A と B との接点、つまり A の直径の左端です。
A の中心じゃないところが、ぼんやりしてると間違えるポイント。
ちなみに d0 は C と一致します。
以上を踏まえて、ActionScript 3.0 でパップス・チェーンを描いたものがこちらです。
Comments
Tell me what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!