
No.3ベストアンサー
- 回答日時:
■(2)+(1)の方法、つまりバブル法で点を(ほぼ)一様に配置し、ドローネー法でつなぐ方法。
球面上に仮想の泡を浮かべ、ある閾値以下の距離にある泡どうしは反発、閾値以上だと引き合うようにします。
この方法では任意の個数のポリゴンを作ることができます。
多くの場合、1つの点を5つまたは6つの3角形が共有しますが、たまに4つだったり7つだったりします。つまりメッシュに綻びが生じます。
これは球面のトポロジー的性質からくるもので、台風の発生原理と通ずるものがあります。
球面のドローネー法
1.適当な3点をとり、それで囲まれる領域を最初の3角形と考える。球面の場合、囲まれる領域が2つ考えられるので、この時点で2つの3角形が認識された。
2.点を順次追加していく。
2-1.追加された点(Dとおく)は、どの3角形の内側にあるか調べる。
2-2.点Dが含まれる3角形がみつかったら、それを3角形ABCとおく。
2-3.3角形ABCを点Dで3分割する。つまり、3角形ABD、BCD、CADができる。
2-4.3角形ABCに対し、
1)辺ABをはさんで隣接する3角形ABC'
2)辺BCをはさんで隣接する3角形A'BC
3)辺CAをはさんで隣接する3角形AB'C
を考える。
2-5.
1)辺ABを対角線の一つとする台形ADBC'を考え、もしもう片方の対角線DC'の方が短ければ、長い方を消して短い方につなぎ替える。
2)、3)BDCA'、CDAB'についても同じことをする。
2-6.2へ戻る。
■精度の高い球面分割ができる(3)は、球面自己組織化マップ(Spherical SOM)と呼ばれています。
この方法で得られるメッシュは1点を5つまたは6つの3角形が共有し(つまりサッカーボール)、最適かつ均一な配置となります。
ただし、点の数が2+10(4^N)で表現できる自然数でなくてはいけません。具体的には、
N=1のとき12個
N=2のとき42個
N=3のとき162個
N=4のとき642個
N=5のとき2562個
N=6のとき10242個
となります。
疲れたのでとりあえずここまで
この回答への補足
大変丁寧にご説明いただきありがとうございます。
とても興味深く、参考になります。
特に球面自己組織化マップで球面分割できればきれいなメッシュが得られ、正確な変形が出来そうです。
しかし、サッカーボール(を更に三角形に分割したポリゴン)のようなメッシュをかけるにはどうすれば良いか分かりません。
というより、頂点の座標の決定法すら思い浮かびません。
もし、ご存じなら時間があるときでよいので、補足お願いします。
URLでも構いません。
何度も申し訳ございません。
No.2
- 回答日時:
すみません。
補足ですが(2)単独では分割までできないですね(^^;卑怯なやりかたですが(2)を用いて
(ほぼ)一様に分布した点に対して、
距離が一定以上かつ一定以下のものどうしをつないでいく方法があります。
もちろんそれでは3角形じゃないポリゴンが所々できてしまうので、手動で点を追加したりします。
この回答への補足
>閉曲面の有限要素近似で、実際にシミュレーションするということでいいでしょうか。
はい!
>点の数はどのくらいで、精度はどのくらい必要でしょうか?
精度は出来るだけ正確なものが良いです。
しかし処理時間が遅くなりすぎると少し困ります。
多少は遅くなってもかまいませんが、出来る限りリアルタイムで応答し、その中でより正確なものが良いです。
点の数もリアルタイム性を実現できる範囲であれば、より多い方が正確な描画が出来て良いと思うのですが・・・。
是非、ご教授願いたいです。よろしくお願いいたします。
No.1
- 回答日時:
閉曲面の有限要素近似で、実際にシミュレーションするということでいいでしょうか。
点の数はどのくらいで、精度はどのくらい必要でしょうか?
球面の等分割は非常に奥が深く、様々な手法が考案されています。なかでも有力なのは、
(1)球面ドローネー法(ドローネー分割の球面版)
(2)バブルメッシュ法(点どうしに斥力と引力を働かせる)
(3)正20面体から発展させていく方法(精度が高い)
その他らせんを利用した方法等、いろいろありますがそれぞれ利点と欠点があります。
手っ取り早く何も考えなくていいのが(2)ですが、精度はいまいちです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSが全く分かりません、お助け...
-
Windows Formアプリからコンソ...
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
バッチファイルで以下のような...
-
どちのほうがすきですか?
-
c言語
-
MACで動く実行ファイルをWindow...
-
どなたかこのプログラミングを...
-
終端記号、非終端記号とは
-
【C言語】全角文字の配列を、全...
-
C言語の関数のextern宣言
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
プログラミング言語でアプリや...
-
次の記述について
-
C#でTreeViewのCheckBoxのサイ...
-
次の日本語の意味を教えて下さい
-
右ビットシフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1秒毎に1カウントアップ
-
timeBeginPeriodとtimeEndPerio...
-
select関数について(winsock)
-
いいエディター
-
プログラムのループ1周に費や...
-
京セラのスマホ、BASIO3をバー...
-
パソコンに何かが勝手にダウン...
-
エクセルVBA、ステップモードと...
-
eclipseで、「ポート番号が使用...
-
Excel実行時エラー-2146959355?
-
A-oneのラベル屋さんについて
-
ラベル屋さんと言うソフトのフ...
-
VB.NETでDataTableにデータ追加...
-
VisualStudioからVScodeへの移植
-
パソコンのスクリーンセーバー...
-
VB.NETでボタンのクリックイベ...
-
プロパティの値が不正ですって...
-
latexでのエラー
-
iMac OS Mojave 10.14.6で iMov...
-
PC版のMinecraftが応答なしにな...
おすすめ情報