(57)【要約】【課題】球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する。【解決手段】入力された数の点を一様乱数に基づいて決定した球面の座標に配置する（ステップＳ２０２）。そして、配置された点にその球面上にのみ移動可能という拘束条件を与え（ステップＳ２０３）、各点同士とその球の中心との中心角θを夫々算出して（ステップＳ２０４）、その中心角θを変数とする評価関数に基づいて各点を移動する（ステップＳ２０５〜Ｓ２０６）。【選択図】図２
2007156528.tif 000002
【特許請求の範囲】
【請求項１】
所定の球面に配置する点の数を決定する決定ステップと、前記点を前記球面に夫々配置する配置ステップと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与ステップと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動ステップとを有することを特徴とする点密度均等配置方法。
【請求項２】
前記所定の評価は前記点同士の所定の値に依存した斥力に係る評価であることを特徴とする請求項１記載の点密度均等配置方法。
【請求項３】
前記点同士の所定の値は前記点同士と前記球の中心との中心角であることを特徴とする請求項２記載の点密度均等配置方法。
【請求項４】
前記斥力は前記中心角を変数とする関数で表されることを特徴とする請求項３記載の点密度均等配置方法。
【請求項５】
前記配置ステップは前記点を前記球面に夫々一様乱数に基づいて配置することを特徴とする請求項１乃至４のいずれか１項に記載の点密度均等配置方法。
【請求項６】
所定の球面に配置する点の数を決定する決定手段と、前記点を前記球面に夫々配置する配置手段と、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与手段と、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動手段とを有することを特徴とする点密度均等配置装置。
【請求項７】
前記所定の評価は前記点同士の所定の値に依存した斥力に係る評価であることを特徴とする請求項６記載の点密度均等配置装置。
【請求項８】
前記点同士の所定の値は前記点同士と前記球の中心との中心角であることを特徴とする請求項７記載の点密度均等配置装置。
【請求項９】
前記斥力は前記中心角を変数とする関数で表されることを特徴とする請求項８記載の点密度均等配置装置。
【請求項１０】
前記配置手段は前記点を前記球面に夫々一様乱数に基づいて配置することを特徴とする請求項６乃至９のいずれか１項に記載の点密度均等配置装置。
【請求項１１】
所定の球面に配置する点の数を決定する決定モジュールと、前記点を前記球面に夫々配置する配置モジュールと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与モジュールと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動モジュールとをコンピュータに実行させることを特徴とする点密度均等配置プログラム。
【請求項１２】
請求項１１記載のプログラムを格納するコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体に関し、特に、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体に関する。
【背景技術】
【０００２】
例えば、中心に電荷を有する球の球面上の電場を表現するためには、その球面上に任意の数の点を配置し、その各点での電場を求める。この場合、その各点がより球面に対して均等な密度で配置されている方が、球面上の電場の情報を、その球面上の場所に依存することなく表現することができる。
【０００３】
従来、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する方法として、後述する正２０面体を用いて球面を分割するジオデシックドーム等の方法がある（例えば、特許文献１参照）。また、配置される点を３次元ユークリッド空間における極座標（ｒ，θ，φ）で表現し、ｒを球の半径とし、θ（０°〜１８０°）とφ（０°〜３６０°）を変化させることによりできる限り球面上の点密度が均等になるように点の配置を調整する方法とがある。
【０００４】
前述した正２０面体を用いて球面を分割するジオデシックドーム等の方法には、次のものがある。正２０面体を構成している基準三角形を後述する方法で分割して分割後の各頂点を、正２０面体を内接する球の球面上へ、その球の中心から投影し、球面上に投影された点を結ぶことにより球面を分割するのが平面投影法（図１４（Ａ））である。また、基準三角形の頂点を結ぶ外接球上円弧を分割して球面を分割するのが円弧等分割法（図１４（Ｂ））である。
【０００５】
前述した基準三角形を分割する方法としては、基準三角形の各辺の各中点同士を夫々結ぶオルタネイト分割法（２分割）（図１３（Ａ））と、基準三角形の各辺の各中点と対向する各頂点を夫々結ぶトリアコン分割法（２分割）（図１３（Ｂ））とがある。
【特許文献１】特開２００１−２９０８５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記ジオデシックドーム等の方法を用いた従来の技術においては、配置できる点の数に制限がある。このため、実際に任意の数の点に最も近い数の頂点を持つ面に分割されたジオデシックドームを作成できたとしても、その頂点の座標を求めるためには、煩雑な計算手続きが必要となる。
【０００７】
また、上記極座標表示を用いた従来の技術においては、θとφを均等に分割して点を配置したとしても、θ＝０°，１８０°周辺において点の密度が高くなってしまい、点密度を均等に近づけるように調整するためには、煩雑な計算手続きが必要となる。
【０００８】
本発明の目的は、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することである。また、そのための点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、請求項１記載の点密度均等配置方法は、所定の球面に配置する点の数を決定する決定ステップと、前記点を前記球面に夫々配置する配置ステップと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与ステップと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動ステップとを有することを特徴とする。
【００１０】
請求項６記載の点密度均等配置装置は、所定の球面に配置する点の数を決定する決定手段と、前記点を前記球面に夫々配置する配置手段と、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与手段と、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動手段とを有することを特徴とする。
【００１１】
請求項１１記載の点密度均等配置プログラムは、所定の球面に配置する点の数を決定する決定モジュールと、前記点を前記球面に夫々配置する配置モジュールと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与モジュールと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動モジュールとをコンピュータに実行させることを特徴とする。
【００１２】
請求項１２記載の記憶媒体は、請求項１１記載のプログラムを格納することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、球面に配置する点を夫々配置して、配置された点を球面に対して夫々拘束して、点同士と球の中心との中心角に依存した斥力に基づいて夫々移動させる。これにより、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面を参照しながら詳述する。
【００１５】
図１は、本発明の実施の形態に係る点密度均等配置装置の構成を概略的に示す図である。
【００１６】
図１において、点密度均等配置装置１００は、入力装置１０１と、後述する点密度均等配置処理を実行するＣＰＵ１０５及び主記憶装置１０６を内部に備えるコンピュータ本体１０２と、補助記憶装置１０３と、出力装置１０４とを備える。入力装置１０１、補助記憶装置１０３及び出力装置１０４はコンピュータ本体１０２に夫々接続されている。
【００１７】
ＣＰＵ１０５は、決定部１０７、配置部１０８、拘束部１０９及び移動部１１０としての機能を備え、主記憶装置１０６に接続されている。
【００１８】
ＣＰＵ１０５は、点密度均等配置装置１００の中で、各装置及び各部の制御やデータの計算及び加工を行う中枢部分である。
【００１９】
ＣＰＵ１０５は、また、メモリ（不図示）に記憶されたプログラムを実行し、入力装置１０１や補助記憶装置１０３及び主記憶装置１０６からデータを受け取り、演算及び加工して上で、出力装置１０４や補助記憶装置１０３及び主記憶装置１０６に出力する。
【００２０】
図２は、図１におけるＣＰＵ１０５によって実行される点密度均等配置処理の手順を示すフローチャートである。
【００２１】
図２において、まず、操作者の操作に基づき配置する点の数を入力する（ステップＳ２０１）。（ｘ，ｙ，ｚ）座標系において下式（１）に示す球の球面上に、上記入力された数の点を夫々下式（１）に示すθ’とφとを一様乱数に基づいて決定した座標に配置する（ステップＳ２０２）。
【００２２】
【数１】
2007156528.tif 000003
【００２３】
次いで、上記配置された点にその球面上にのみ移動可能という拘束条件を与える（ステップＳ２０３）。各点同士とその球の中心とがつくる扇形において２つの直線で挟まれた角度を０°〜１８０°の範囲で表現した角度の大きさである中心角θを夫々算出する（ステップＳ２０４）。さらに、操作者によって作成された上記中心角θを変数とする関数を評価関数として設定し（ステップＳ２０５）、上記設定された評価関数に基づいて各点を移動する（ステップＳ２０６）。設定された試行回数を行ったか否かを判別して（ステップＳ２０７）、設定された試行回数を行ったときは、本処理を終了する。
【００２４】
ステップＳ２０７の判別の結果、設定された試行回数を行っていないときは、ステップＳ２０４以降の処理を繰り返す。
【００２５】
図２の点密度均等配置処理によれば、球面上に配置された点（ステップＳ２０２）に拘束条件を与え（ステップＳ２０３）、設定された評価関数に基づいて各点を移動する（ステップＳ２０６）。このため、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することができる。
【００２６】
本実施の形態では、ＬＩＮＵＸを搭載した汎用のパーソナルコンピュータを用いて計算を行う。
【００２７】
また、本実施の形態で使用するプログラムはＣ＋＋言語を用いて記述されたものであり、後述する図４〜図５及び図９〜図１０の描画はｇｎｕｐｌｏｔを用いて描かれる。
【００２８】
以下の実施例では、一様な導電率の物質内に電荷がある場合の、電荷を中心とする球面上に発する電場を表現する。
【００２９】
図３は、図２の点密度均等配置処理の実施例の手順を示すフローチャートである。
【００３０】
図３の処理は、図２の処理と基本的に同じであり、図２のステップと同一のステップには同一符号を伏して重複した説明を省略し、以下に図２の処理と異なる部分についてのみ説明する。
【００３１】
図３において、まず、操作者によって配置する点の数を５００と入力し（ステップＳ２０１ａ）、球の球面上において上記入力された数の点を一様乱数に基づいて決定した座標に配置する（ステップＳ２０２）。上記配置された点に拘束条件を与え（ステップＳ２０３）、各点同士とその球の中心とがつくる扇形において中心角θを夫々算出する（ステップＳ２０４）。操作者によって下式（２）に示す指数関数ｐ（θ）を作成してそれを評価関数として設定する（ステップＳ２０５ａ）。
【００３２】
【数２】
2007156528.tif 000004
【００３３】
式（２）に示す関数ｐ（θ）の大きさは、２点間の中心角θが小さいほど指数関数的に増加する。従って、式（２）に示す関数ｐ（θ）の大きさを用いて、２点間の中心角θを下式（３）に示すように変化させることは、各点に対して指数関数の形状の斥力が作用していることと等価となる。
【００３４】
【数３】
2007156528.tif 000005
【００３５】
次いで、上記設定された評価関数に基づいて各点を移動し（ステップＳ２０６）、試行回数１００回を行ったか否かを判別して（ステップＳ２０７ａ）、試行回数１００回を行ったときは、本処理を終了する。
【００３６】
ステップＳ２０７ａの判別の結果、試行回数１００回を行っていないときは、ステップＳ２０４以降の処理を繰り返す。
【００３７】
本実施例では、式（２）において、ｗ＝０．００１とし、αは最大値を１として試行回数に反比例させて減少させる。
【００３８】
本実施例では、球面上の１点を支点にして他の点との中心角θを算出し、ｐ（θ）の大きさを元に他の点を移動させる。この手順を球面上の他の全ての点について行い、さらに、他の全ての点を支点にして一連の手順を行う。これら一連の手順を１回の試行とする。
【００３９】
図４は、図３の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。また、比較対象として図３のステップＳ２０２における一様乱数を用いて球面上に点を配置した際のその点から発する電場を表現した図を示す（図５）。
【００４０】
次に、図４及び図５に示した点が球面に対してどれほど均等に配置されているか、つまり、均等な点密度を持っているかの検証を行う。
【００４１】
図６は、図３の点密度均等配置処理実行後において、球面上に配置された点の各点同士の中心角を全ての点の組み合わせについて算出し、０°〜１８０°まで１．８°間隔で、各点同士の中心角の角度がその範囲内に入る数の棒グラフである。結果を検証するため正弦関数のグラフを重ねて示す。また、比較対象として図３のステップＳ２０２における一様乱数を用いて球面上に点を配置した際の算出結果を示す（図７）。
【００４２】
上記検証における、各点が球面にどれだけ均等に配置されているかは、図６及び図７の棒グラフの分布の形状が、正弦関数にどれだけ沿っているかが指標の一つとなる。
【００４３】
なぜなら、（ｘ’，ｙ’，ｚ’）座標系において下式（４）に示す球の球面上で、あるθ”に対してφ’を３６０°回転させたときの円周の長さは、２π・ｓｉｎ（θ”）で表される。従って、球面上に均等に点が配置されていれば微小面積２πｓｉｎ（θ”）・Δθ”内に存在する点の数は、正弦関数ｓｉｎθ”に比例することになる。
【００４４】
【数４】
2007156528.tif 000006
【００４５】
図６を検証すると、本実施の形態による方法で計算を行った後の点の配置は、正弦関数にほぼ沿った分布をしていることが分かる。それに対し、図７に示した一様乱数で球面上に配置したものは、正弦関数からは分布の形が異なっている。これは、一様乱数で決定しているθ，φにおいて、θ＝０°，１８０°の近傍の点密度が高くなるということが原因である。
【００４６】
図８は、図２の点密度均等配置処理の他の実施例の手順を示すフローチャートである。
【００４７】
図８の処理においても、図２の処理と基本的に同じであり、図２のステップと同一のステップには同一符号を伏して重複した説明を省略し、以下に図２の処理と異なる部分についてのみ説明する。
【００４８】
図８において、まず、操作者によって配置する点の数を２００と入力し（ステップＳ２０１ｂ）、球の球面上において上記入力された数の点を一様乱数に基づいて決定した座標に配置する（ステップＳ２０２）。上記配置された点に拘束条件を与え（ステップＳ２０３）、各点同士とその球の中心とがつくる扇形において中心角θを夫々算出する（ステップＳ２０４）。操作者によって下式（５）に示す関数ｐ２（θ）を作成してそれを評価関数として設定する（ステップＳ２０５ａ）。
【００４９】
【数５】
2007156528.tif 000007
【００５０】
式（５）に示す関数ｐ２（θ）の大きさは、２点間の中心角θが小さいほど増加する。従って、式（５）に示す関数ｐ２（θ）の大きさを用いて、２点間の中心角θを式（３）に示すように変化させることは、各点に対して関数の形状の斥力が作用していることと等価となる。
【００５１】
次いで、上記設定された評価関数に基づいて各点を移動し（ステップＳ２０６）、試行回数５００回を行ったか否かを判別して（ステップＳ２０７ｂ）、試行回数５００回を行ったときは、本処理を終了する。
【００５２】
ステップＳ２０７ｂの判別の結果、試行回数５００回を行っていないときは、ステップＳ２０４以降の処理を繰り返す。
【００５３】
本実施例では、式（５）において、ｗ２＝２０とし、α２は最大値を１として試行回数に反比例させて減少させる。
【００５４】
本実施例では、球面上の１点を支点にして他の点との中心角θを算出し、ｐ２（θ）の大きさを元に他の点を移動させる。この手順を球面上の他の全ての点について行い、さらに、他の全ての点を支点にして一連の手順を行う。これら一連の手順を１回の試行とする。
【００５５】
図９は、図８の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。また、比較対象として図８のステップＳ２０２における一様乱数を用いて球面上に点を配置した際のその点から発する電場を表現した図を示す（図１０）。
【００５６】
次に、図９及び図１０に示した点が球面に対してどれほど均等に配置されているか、つまり、均等な点密度を持っているかの検証を行う。
【００５７】
図１１は、図８の点密度均等配置処理実行後において、球面上に配置された点の各点同士の中心角を全ての点の組み合わせについて算出し、０°〜１８０°まで１．８°間隔で、各点同士の中心角の角度がその範囲内に入る数の棒グラフである。結果を検証するため正弦関数のグラフを重ねて示す。また、比較対象として図８のステップＳ２０２における一様乱数を用いて球面上に点を配置した際の算出結果を示す（図１２）。
【００５８】
上記検証における、各点が球面にどれだけ均等に配置されているかにおいても、図１１及び図１２の棒グラフの分布の形状が、正弦関数にどれだけ沿っているかが指標の一つとなる。
【００５９】
図１１を検証すると、本実施の形態による方法で計算を行った後の点の配置は、正弦関数にほぼ沿った分布をしていることが分かる。それに対し、図１２に示した一様乱数で球面上に配置したものは、正弦関数からは分布の形が異なっている。これは、一様乱数で決定しているθ，φにおいて、θ＝０°，１８０°の近傍の点密度が高くなるということが原因である。
【００６０】
また、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給する場合を考える。ここで、本発明の目的は、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【００６１】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６２】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク等を用いることができる。あるいは、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等の光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００６３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合だけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【００６４】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合を考える。この場合に、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も本発明に含まれる。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施の形態に係る点密度均等配置装置の構成を概略的に示す図である。
【図２】図１におけるＣＰＵによって実行される点密度均等配置処理の手順を示すフローチャートである。
【図３】図２の点密度均等配置処理の実施例の手順を示すフローチャートである。
【図４】図３の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。
【図５】図３のステップＳ２０２において球面上に配置された点のその点から発する電場を表現した図である。
【図６】図３の点密度均等配置処理実行後において、球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図７】図３のステップＳ２０２において球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図８】図２の点密度均等配置処理の他の実施例の手順を示すフローチャートである。
【図９】図８の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。
【図１０】図８のステップＳ２０２において球面上に配置された点のその点から発する電場を表現した図である。
【図１１】図８の点密度均等配置処理実行後において、球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図１２】図８のステップＳ２０２において球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図１３】従来の基準三角形を分割する方法を説明する図である。
【図１４】従来の投影法を説明する図である。
【符号の説明】
【００６６】
１００  点密度均等配置装置
１０１  入力装置
１０２  コンピュータ本体
１０４  出力装置
１０５  ＣＰＵ
【図１】
2007156528.tif 000008
【図２】
2007156528.tif 000009
【図３】
2007156528.tif 000010
【図４】
2007156528.tif 000011
【図５】
2007156528.tif 000012
【図６】
2007156528.tif 000013
【図７】
2007156528.tif 000014
【図８】
2007156528.tif 000015
【図９】
2007156528.tif 000016
【図１０】
2007156528.tif 000017
【図１１】
2007156528.tif 000018
【図１２】
2007156528.tif 000019
【図１３】
2007156528.tif 000020
【図１４】
2007156528.tif 000021