naoppyの日記

自分が欲しいなと思った記事を書きます。

あたまの体操 楕円の軸並行矩形

傾いている楕円の外接軸並行矩形を計算するのは大変な気がする。 そこで、外接という条件を緩くして楕円を内包する軸並行矩形を計算することを考える。

まず、x2/a2+y2/b2=1がθ傾いている楕円の外接矩形は非常に簡単に、2a x 2bの矩形がθ (0<=θ<=pi/2) 傾いているもので与えられる。

傾いている楕円の外接矩形

そして、この矩形に外接する軸並行矩形を計算する。簡単な行列計算で、外接する軸並行矩形の一番上のy座標は y=asinθ+bcosθ、一番右のx座標は x=acosθ+bsinθ になる。

点対称なので、これで終わりだ。 次にこうして得られた軸並行矩形の評価に移る。面積をどれだけの比率で近似できているかを考える。

まず、楕円を矩形で近似した部分は楕円の面積が pi a b であるのに対し、矩形の面積が 4ab なので、比率は pi/4 である。 次に傾いた矩形を軸並行矩形に近似した部分は 矩形の面積 4ab に対し、軸並行矩形の面積が 4(acosθ+bsinθ)(asinθ+bcosθ) なので比率は ab / {sinθcosθ(a2+b2) + ab} となる。 これはθ=0, pi/2 で最大値 1 をとり、θ=pi/4 で最小値 2ab/(a+b)2 をとる。これがよろしくない。a=bのときは1/2で済むが、|a-b|が大きくなればなるほど、悪化してしまう。 まとめて、楕円からすると、比率にして (pi/4) * ab / {sinθcosθ(a2+b2) + ab} となる。

aとbの差がそこまで大きくない、傾きの小さい楕円ならいいが、45度に近い楕円だとa=bでも円より1/2の面積率になり、a<<bの極限では0になってしまう。

では次の方法、直接外接する軸並行矩形を楕円から計算することを考えるが、これはまだ考えてないので誰か考えてみてください。