• 締切済み

多角形の三角分割

こんばんは!エクセルVBA初心者です。 VBAで色々試して遊んだり勉強したりしています。 その一環でフォーム上に画像を設置して、その画像の特定の位置をクリックすると、クリックされた場所に応じた反応を示すマクロを組もうと頑張っています。例えば日本地図で都道府県毎にクリックするとそれぞれ個別の反応を示すという感じです。 このやり方を考えておりましたら、取り合えず都道府県で話をさせていただきますが、都道府県のそれぞれの頂点を調べて、この都道府県を示す多角形をデータとしてもつ必要がある感じがしました。これさえ分かれば、あとはマウスポインタがそれぞれの多角形の中にいるかいないかを調べれば良いんだ、やったと思ってやってみました。 で、これはできました。多角形のそれぞれの線分(といえばいいのかな?)と、多角形内の一点とマウスポインタを結ぶ線分との交差チェックをやるとできる感じで(既にバグがあったのですが)、交差が0を含む偶数回の交差なら多角形内部、奇数回なら外部で、概ねのところよっしゃって感じですが、ちょっと調べてみたらこのやり方というのはかなり拙劣で、多角形を三角分割して、三角形にしてチェックするとかってのがかなりポピュラーな感じのようです。確かに三角形のチェックなら三角形の面積とマウスポインタと三角形の頂点でできる三角形の面積を比べるだけなのでなんか良い気がします。 ただ、三角分割は私にはちょっと想像がつきません。デローニ分割というのが有名なようですが、これを解説しているサイトが見当たらず(この語句に触れているところは多いのですが、コードを使った説明があまりない感じです)、困っています。どこかサイトがあれば教えてください。もし2000字で説明できるぜって方がいらっしゃいましたら、それはもう大歓迎です。 どうぞよろしくお願いいたします。

みんなの回答

  • NiTA601
  • ベストアンサー率0% (0/0)
回答No.1

参考URL先がやりたいことを実現するのに一番簡単な方法ではないかと思います。ほぼどんな形状の非凸多角形でも三角形に分割可能だと思われます。C言語で書かれているため、VBに直すのに多少苦労するかもしれませんが、頑張って見てください。

参考URL:
http://son-son.sakura.ne.jp/2007/02/post_67.html

関連するQ&A

専門家に質問してみよう