垂線の長さは、線分への最短距離だからです。H,N,Fが円の内側(in)・周上(on)・外側(out)で分類すると、全部で10通りの状況があります。)ただ、これだけでは不十分です。あともう一つH,N,Fの順序がどのようになっているか、この情報も必要になってきます。Hの座標を調べて...というのは実際面倒なので、△ONFにおける∠Nが鋭角か、直角か、鈍角かで判断します。∠Nが直角の時、H,N,Fの順に並ぶのは∠Nが鈍角の時です。Nの方がFよりもOに近いので、N,F,Hの順というのはありません。いうことで、これらの情報をまとめると次の表のようになります。I(16)なお、カッコ内の数字は、実際にコードを実装した時に、それぞれの状況に対して振ったインデクスの数値です。in,out,out,鈍角、on,out,out鈍角、out,out,outの主に3種類にわたって同じ分類になっています。)、点の位置関係が異なれば異なるアルファベット分類になっています。一致する必要があるためです。一応、上の表の主要な部分を図示してみました。見辛い気もしますが、次のようになります。なんかもう素直過ぎる実装なのでいっか、という気もするのですが、Rubyでの提出コードです。OHの距離は三角形の面積×2÷底辺の長さという分数計算なので、有理数クラスRationalを使っています。"ABFCDGEIGxH"[t+(d2l+d2n<=>d2f)/2*t/-4]||?I}終わりに高校の時にこういうのやったなあ、と懐かしさを覚える問題でした。条件をきちんと整備するいい訓練になるのではないでしょうか。)月別アーカイブはてなブログをはじめよう!ange1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。