点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体
【課題】球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する。
【解決手段】入力された数の点を一様乱数に基づいて決定した球面の座標に配置する(ステップS202)。そして、配置された点にその球面上にのみ移動可能という拘束条件を与え(ステップS203)、各点同士とその球の中心との中心角θを夫々算出して(ステップS204)、その中心角θを変数とする評価関数に基づいて各点を移動する(ステップS205〜S206)。
【解決手段】入力された数の点を一様乱数に基づいて決定した球面の座標に配置する(ステップS202)。そして、配置された点にその球面上にのみ移動可能という拘束条件を与え(ステップS203)、各点同士とその球の中心との中心角θを夫々算出して(ステップS204)、その中心角θを変数とする評価関数に基づいて各点を移動する(ステップS205〜S206)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体に関し、特に、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体に関する。
【背景技術】
【0002】
例えば、中心に電荷を有する球の球面上の電場を表現するためには、その球面上に任意の数の点を配置し、その各点での電場を求める。この場合、その各点がより球面に対して均等な密度で配置されている方が、球面上の電場の情報を、その球面上の場所に依存することなく表現することができる。
【0003】
従来、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する方法として、後述する正20面体を用いて球面を分割するジオデシックドーム等の方法がある(例えば、特許文献1参照)。また、配置される点を3次元ユークリッド空間における極座標(r,θ,φ)で表現し、rを球の半径とし、θ(0°〜180°)とφ(0°〜360°)を変化させることによりできる限り球面上の点密度が均等になるように点の配置を調整する方法とがある。
【0004】
前述した正20面体を用いて球面を分割するジオデシックドーム等の方法には、次のものがある。正20面体を構成している基準三角形を後述する方法で分割して分割後の各頂点を、正20面体を内接する球の球面上へ、その球の中心から投影し、球面上に投影された点を結ぶことにより球面を分割するのが平面投影法(図14(A))である。また、基準三角形の頂点を結ぶ外接球上円弧を分割して球面を分割するのが円弧等分割法(図14(B))である。
【0005】
前述した基準三角形を分割する方法としては、基準三角形の各辺の各中点同士を夫々結ぶオルタネイト分割法(2分割)(図13(A))と、基準三角形の各辺の各中点と対向する各頂点を夫々結ぶトリアコン分割法(2分割)(図13(B))とがある。
【特許文献1】特開2001−290851号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記ジオデシックドーム等の方法を用いた従来の技術においては、配置できる点の数に制限がある。このため、実際に任意の数の点に最も近い数の頂点を持つ面に分割されたジオデシックドームを作成できたとしても、その頂点の座標を求めるためには、煩雑な計算手続きが必要となる。
【0007】
また、上記極座標表示を用いた従来の技術においては、θとφを均等に分割して点を配置したとしても、θ=0°,180°周辺において点の密度が高くなってしまい、点密度を均等に近づけるように調整するためには、煩雑な計算手続きが必要となる。
【0008】
本発明の目的は、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することである。また、そのための点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するために、請求項1記載の点密度均等配置方法は、所定の球面に配置する点の数を決定する決定ステップと、前記点を前記球面に夫々配置する配置ステップと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与ステップと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動ステップとを有することを特徴とする。
【0010】
請求項6記載の点密度均等配置装置は、所定の球面に配置する点の数を決定する決定手段と、前記点を前記球面に夫々配置する配置手段と、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与手段と、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動手段とを有することを特徴とする。
【0011】
請求項11記載の点密度均等配置プログラムは、所定の球面に配置する点の数を決定する決定モジュールと、前記点を前記球面に夫々配置する配置モジュールと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与モジュールと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動モジュールとをコンピュータに実行させることを特徴とする。
【0012】
請求項12記載の記憶媒体は、請求項11記載のプログラムを格納することを特徴とする。
【発明の効果】
【0013】
本発明によれば、球面に配置する点を夫々配置して、配置された点を球面に対して夫々拘束して、点同士と球の中心との中心角に依存した斥力に基づいて夫々移動させる。これにより、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することができる。
【発明を実施するための最良の形態】
【0014】
以下、本発明の実施の形態を図面を参照しながら詳述する。
【0015】
図1は、本発明の実施の形態に係る点密度均等配置装置の構成を概略的に示す図である。
【0016】
図1において、点密度均等配置装置100は、入力装置101と、後述する点密度均等配置処理を実行するCPU105及び主記憶装置106を内部に備えるコンピュータ本体102と、補助記憶装置103と、出力装置104とを備える。入力装置101、補助記憶装置103及び出力装置104はコンピュータ本体102に夫々接続されている。
【0017】
CPU105は、決定部107、配置部108、拘束部109及び移動部110としての機能を備え、主記憶装置106に接続されている。
【0018】
CPU105は、点密度均等配置装置100の中で、各装置及び各部の制御やデータの計算及び加工を行う中枢部分である。
【0019】
CPU105は、また、メモリ(不図示)に記憶されたプログラムを実行し、入力装置101や補助記憶装置103及び主記憶装置106からデータを受け取り、演算及び加工して上で、出力装置104や補助記憶装置103及び主記憶装置106に出力する。
【0020】
図2は、図1におけるCPU105によって実行される点密度均等配置処理の手順を示すフローチャートである。
【0021】
図2において、まず、操作者の操作に基づき配置する点の数を入力する(ステップS201)。(x,y,z)座標系において下式(1)に示す球の球面上に、上記入力された数の点を夫々下式(1)に示すθ’とφとを一様乱数に基づいて決定した座標に配置する(ステップS202)。
【0022】
【数1】
【0023】
次いで、上記配置された点にその球面上にのみ移動可能という拘束条件を与える(ステップS203)。各点同士とその球の中心とがつくる扇形において2つの直線で挟まれた角度を0°〜180°の範囲で表現した角度の大きさである中心角θを夫々算出する(ステップS204)。さらに、操作者によって作成された上記中心角θを変数とする関数を評価関数として設定し(ステップS205)、上記設定された評価関数に基づいて各点を移動する(ステップS206)。設定された試行回数を行ったか否かを判別して(ステップS207)、設定された試行回数を行ったときは、本処理を終了する。
【0024】
ステップS207の判別の結果、設定された試行回数を行っていないときは、ステップS204以降の処理を繰り返す。
【0025】
図2の点密度均等配置処理によれば、球面上に配置された点(ステップS202)に拘束条件を与え(ステップS203)、設定された評価関数に基づいて各点を移動する(ステップS206)。このため、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することができる。
【0026】
本実施の形態では、LINUXを搭載した汎用のパーソナルコンピュータを用いて計算を行う。
【0027】
また、本実施の形態で使用するプログラムはC++言語を用いて記述されたものであり、後述する図4〜図5及び図9〜図10の描画はgnuplotを用いて描かれる。
【0028】
以下の実施例では、一様な導電率の物質内に電荷がある場合の、電荷を中心とする球面上に発する電場を表現する。
【0029】
図3は、図2の点密度均等配置処理の実施例の手順を示すフローチャートである。
【0030】
図3の処理は、図2の処理と基本的に同じであり、図2のステップと同一のステップには同一符号を伏して重複した説明を省略し、以下に図2の処理と異なる部分についてのみ説明する。
【0031】
図3において、まず、操作者によって配置する点の数を500と入力し(ステップS201a)、球の球面上において上記入力された数の点を一様乱数に基づいて決定した座標に配置する(ステップS202)。上記配置された点に拘束条件を与え(ステップS203)、各点同士とその球の中心とがつくる扇形において中心角θを夫々算出する(ステップS204)。操作者によって下式(2)に示す指数関数p(θ)を作成してそれを評価関数として設定する(ステップS205a)。
【0032】
【数2】
【0033】
式(2)に示す関数p(θ)の大きさは、2点間の中心角θが小さいほど指数関数的に増加する。従って、式(2)に示す関数p(θ)の大きさを用いて、2点間の中心角θを下式(3)に示すように変化させることは、各点に対して指数関数の形状の斥力が作用していることと等価となる。
【0034】
【数3】
【0035】
次いで、上記設定された評価関数に基づいて各点を移動し(ステップS206)、試行回数100回を行ったか否かを判別して(ステップS207a)、試行回数100回を行ったときは、本処理を終了する。
【0036】
ステップS207aの判別の結果、試行回数100回を行っていないときは、ステップS204以降の処理を繰り返す。
【0037】
本実施例では、式(2)において、w=0.001とし、αは最大値を1として試行回数に反比例させて減少させる。
【0038】
本実施例では、球面上の1点を支点にして他の点との中心角θを算出し、p(θ)の大きさを元に他の点を移動させる。この手順を球面上の他の全ての点について行い、さらに、他の全ての点を支点にして一連の手順を行う。これら一連の手順を1回の試行とする。
【0039】
図4は、図3の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。また、比較対象として図3のステップS202における一様乱数を用いて球面上に点を配置した際のその点から発する電場を表現した図を示す(図5)。
【0040】
次に、図4及び図5に示した点が球面に対してどれほど均等に配置されているか、つまり、均等な点密度を持っているかの検証を行う。
【0041】
図6は、図3の点密度均等配置処理実行後において、球面上に配置された点の各点同士の中心角を全ての点の組み合わせについて算出し、0°〜180°まで1.8°間隔で、各点同士の中心角の角度がその範囲内に入る数の棒グラフである。結果を検証するため正弦関数のグラフを重ねて示す。また、比較対象として図3のステップS202における一様乱数を用いて球面上に点を配置した際の算出結果を示す(図7)。
【0042】
上記検証における、各点が球面にどれだけ均等に配置されているかは、図6及び図7の棒グラフの分布の形状が、正弦関数にどれだけ沿っているかが指標の一つとなる。
【0043】
なぜなら、(x’,y’,z’)座標系において下式(4)に示す球の球面上で、あるθ”に対してφ’を360°回転させたときの円周の長さは、2π・sin(θ”)で表される。従って、球面上に均等に点が配置されていれば微小面積2πsin(θ”)・Δθ”内に存在する点の数は、正弦関数sinθ”に比例することになる。
【0044】
【数4】
【0045】
図6を検証すると、本実施の形態による方法で計算を行った後の点の配置は、正弦関数にほぼ沿った分布をしていることが分かる。それに対し、図7に示した一様乱数で球面上に配置したものは、正弦関数からは分布の形が異なっている。これは、一様乱数で決定しているθ,φにおいて、θ=0°,180°の近傍の点密度が高くなるということが原因である。
【0046】
図8は、図2の点密度均等配置処理の他の実施例の手順を示すフローチャートである。
【0047】
図8の処理においても、図2の処理と基本的に同じであり、図2のステップと同一のステップには同一符号を伏して重複した説明を省略し、以下に図2の処理と異なる部分についてのみ説明する。
【0048】
図8において、まず、操作者によって配置する点の数を200と入力し(ステップS201b)、球の球面上において上記入力された数の点を一様乱数に基づいて決定した座標に配置する(ステップS202)。上記配置された点に拘束条件を与え(ステップS203)、各点同士とその球の中心とがつくる扇形において中心角θを夫々算出する(ステップS204)。操作者によって下式(5)に示す関数p2(θ)を作成してそれを評価関数として設定する(ステップS205a)。
【0049】
【数5】
【0050】
式(5)に示す関数p2(θ)の大きさは、2点間の中心角θが小さいほど増加する。従って、式(5)に示す関数p2(θ)の大きさを用いて、2点間の中心角θを式(3)に示すように変化させることは、各点に対して関数の形状の斥力が作用していることと等価となる。
【0051】
次いで、上記設定された評価関数に基づいて各点を移動し(ステップS206)、試行回数500回を行ったか否かを判別して(ステップS207b)、試行回数500回を行ったときは、本処理を終了する。
【0052】
ステップS207bの判別の結果、試行回数500回を行っていないときは、ステップS204以降の処理を繰り返す。
【0053】
本実施例では、式(5)において、w2=20とし、α2は最大値を1として試行回数に反比例させて減少させる。
【0054】
本実施例では、球面上の1点を支点にして他の点との中心角θを算出し、p2(θ)の大きさを元に他の点を移動させる。この手順を球面上の他の全ての点について行い、さらに、他の全ての点を支点にして一連の手順を行う。これら一連の手順を1回の試行とする。
【0055】
図9は、図8の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。また、比較対象として図8のステップS202における一様乱数を用いて球面上に点を配置した際のその点から発する電場を表現した図を示す(図10)。
【0056】
次に、図9及び図10に示した点が球面に対してどれほど均等に配置されているか、つまり、均等な点密度を持っているかの検証を行う。
【0057】
図11は、図8の点密度均等配置処理実行後において、球面上に配置された点の各点同士の中心角を全ての点の組み合わせについて算出し、0°〜180°まで1.8°間隔で、各点同士の中心角の角度がその範囲内に入る数の棒グラフである。結果を検証するため正弦関数のグラフを重ねて示す。また、比較対象として図8のステップS202における一様乱数を用いて球面上に点を配置した際の算出結果を示す(図12)。
【0058】
上記検証における、各点が球面にどれだけ均等に配置されているかにおいても、図11及び図12の棒グラフの分布の形状が、正弦関数にどれだけ沿っているかが指標の一つとなる。
【0059】
図11を検証すると、本実施の形態による方法で計算を行った後の点の配置は、正弦関数にほぼ沿った分布をしていることが分かる。それに対し、図12に示した一様乱数で球面上に配置したものは、正弦関数からは分布の形が異なっている。これは、一様乱数で決定しているθ,φにおいて、θ=0°,180°の近傍の点密度が高くなるということが原因である。
【0060】
また、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給する場合を考える。ここで、本発明の目的は、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【0061】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0062】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク等を用いることができる。あるいは、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW等の光ディスク、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0063】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合だけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【0064】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合を考える。この場合に、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も本発明に含まれる。
【図面の簡単な説明】
【0065】
【図1】本発明の実施の形態に係る点密度均等配置装置の構成を概略的に示す図である。
【図2】図1におけるCPUによって実行される点密度均等配置処理の手順を示すフローチャートである。
【図3】図2の点密度均等配置処理の実施例の手順を示すフローチャートである。
【図4】図3の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。
【図5】図3のステップS202において球面上に配置された点のその点から発する電場を表現した図である。
【図6】図3の点密度均等配置処理実行後において、球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図7】図3のステップS202において球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図8】図2の点密度均等配置処理の他の実施例の手順を示すフローチャートである。
【図9】図8の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。
【図10】図8のステップS202において球面上に配置された点のその点から発する電場を表現した図である。
【図11】図8の点密度均等配置処理実行後において、球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図12】図8のステップS202において球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図13】従来の基準三角形を分割する方法を説明する図である。
【図14】従来の投影法を説明する図である。
【符号の説明】
【0066】
100 点密度均等配置装置
101 入力装置
102 コンピュータ本体
104 出力装置
105 CPU
【技術分野】
【0001】
本発明は、点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体に関し、特に、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体に関する。
【背景技術】
【0002】
例えば、中心に電荷を有する球の球面上の電場を表現するためには、その球面上に任意の数の点を配置し、その各点での電場を求める。この場合、その各点がより球面に対して均等な密度で配置されている方が、球面上の電場の情報を、その球面上の場所に依存することなく表現することができる。
【0003】
従来、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置する方法として、後述する正20面体を用いて球面を分割するジオデシックドーム等の方法がある(例えば、特許文献1参照)。また、配置される点を3次元ユークリッド空間における極座標(r,θ,φ)で表現し、rを球の半径とし、θ(0°〜180°)とφ(0°〜360°)を変化させることによりできる限り球面上の点密度が均等になるように点の配置を調整する方法とがある。
【0004】
前述した正20面体を用いて球面を分割するジオデシックドーム等の方法には、次のものがある。正20面体を構成している基準三角形を後述する方法で分割して分割後の各頂点を、正20面体を内接する球の球面上へ、その球の中心から投影し、球面上に投影された点を結ぶことにより球面を分割するのが平面投影法(図14(A))である。また、基準三角形の頂点を結ぶ外接球上円弧を分割して球面を分割するのが円弧等分割法(図14(B))である。
【0005】
前述した基準三角形を分割する方法としては、基準三角形の各辺の各中点同士を夫々結ぶオルタネイト分割法(2分割)(図13(A))と、基準三角形の各辺の各中点と対向する各頂点を夫々結ぶトリアコン分割法(2分割)(図13(B))とがある。
【特許文献1】特開2001−290851号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記ジオデシックドーム等の方法を用いた従来の技術においては、配置できる点の数に制限がある。このため、実際に任意の数の点に最も近い数の頂点を持つ面に分割されたジオデシックドームを作成できたとしても、その頂点の座標を求めるためには、煩雑な計算手続きが必要となる。
【0007】
また、上記極座標表示を用いた従来の技術においては、θとφを均等に分割して点を配置したとしても、θ=0°,180°周辺において点の密度が高くなってしまい、点密度を均等に近づけるように調整するためには、煩雑な計算手続きが必要となる。
【0008】
本発明の目的は、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することである。また、そのための点密度均等配置装置及びその方法、並びにプログラム及び記憶媒体を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するために、請求項1記載の点密度均等配置方法は、所定の球面に配置する点の数を決定する決定ステップと、前記点を前記球面に夫々配置する配置ステップと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与ステップと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動ステップとを有することを特徴とする。
【0010】
請求項6記載の点密度均等配置装置は、所定の球面に配置する点の数を決定する決定手段と、前記点を前記球面に夫々配置する配置手段と、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与手段と、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動手段とを有することを特徴とする。
【0011】
請求項11記載の点密度均等配置プログラムは、所定の球面に配置する点の数を決定する決定モジュールと、前記点を前記球面に夫々配置する配置モジュールと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与モジュールと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動モジュールとをコンピュータに実行させることを特徴とする。
【0012】
請求項12記載の記憶媒体は、請求項11記載のプログラムを格納することを特徴とする。
【発明の効果】
【0013】
本発明によれば、球面に配置する点を夫々配置して、配置された点を球面に対して夫々拘束して、点同士と球の中心との中心角に依存した斥力に基づいて夫々移動させる。これにより、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することができる。
【発明を実施するための最良の形態】
【0014】
以下、本発明の実施の形態を図面を参照しながら詳述する。
【0015】
図1は、本発明の実施の形態に係る点密度均等配置装置の構成を概略的に示す図である。
【0016】
図1において、点密度均等配置装置100は、入力装置101と、後述する点密度均等配置処理を実行するCPU105及び主記憶装置106を内部に備えるコンピュータ本体102と、補助記憶装置103と、出力装置104とを備える。入力装置101、補助記憶装置103及び出力装置104はコンピュータ本体102に夫々接続されている。
【0017】
CPU105は、決定部107、配置部108、拘束部109及び移動部110としての機能を備え、主記憶装置106に接続されている。
【0018】
CPU105は、点密度均等配置装置100の中で、各装置及び各部の制御やデータの計算及び加工を行う中枢部分である。
【0019】
CPU105は、また、メモリ(不図示)に記憶されたプログラムを実行し、入力装置101や補助記憶装置103及び主記憶装置106からデータを受け取り、演算及び加工して上で、出力装置104や補助記憶装置103及び主記憶装置106に出力する。
【0020】
図2は、図1におけるCPU105によって実行される点密度均等配置処理の手順を示すフローチャートである。
【0021】
図2において、まず、操作者の操作に基づき配置する点の数を入力する(ステップS201)。(x,y,z)座標系において下式(1)に示す球の球面上に、上記入力された数の点を夫々下式(1)に示すθ’とφとを一様乱数に基づいて決定した座標に配置する(ステップS202)。
【0022】
【数1】
【0023】
次いで、上記配置された点にその球面上にのみ移動可能という拘束条件を与える(ステップS203)。各点同士とその球の中心とがつくる扇形において2つの直線で挟まれた角度を0°〜180°の範囲で表現した角度の大きさである中心角θを夫々算出する(ステップS204)。さらに、操作者によって作成された上記中心角θを変数とする関数を評価関数として設定し(ステップS205)、上記設定された評価関数に基づいて各点を移動する(ステップS206)。設定された試行回数を行ったか否かを判別して(ステップS207)、設定された試行回数を行ったときは、本処理を終了する。
【0024】
ステップS207の判別の結果、設定された試行回数を行っていないときは、ステップS204以降の処理を繰り返す。
【0025】
図2の点密度均等配置処理によれば、球面上に配置された点(ステップS202)に拘束条件を与え(ステップS203)、設定された評価関数に基づいて各点を移動する(ステップS206)。このため、球面に対して均等により近い点密度を持つ各点の座標を導出するといった煩雑な計算手続きを行う必要がなく、球面上に任意の数の点を球面上の点密度が均等に近い状態に配置することができる。
【0026】
本実施の形態では、LINUXを搭載した汎用のパーソナルコンピュータを用いて計算を行う。
【0027】
また、本実施の形態で使用するプログラムはC++言語を用いて記述されたものであり、後述する図4〜図5及び図9〜図10の描画はgnuplotを用いて描かれる。
【0028】
以下の実施例では、一様な導電率の物質内に電荷がある場合の、電荷を中心とする球面上に発する電場を表現する。
【0029】
図3は、図2の点密度均等配置処理の実施例の手順を示すフローチャートである。
【0030】
図3の処理は、図2の処理と基本的に同じであり、図2のステップと同一のステップには同一符号を伏して重複した説明を省略し、以下に図2の処理と異なる部分についてのみ説明する。
【0031】
図3において、まず、操作者によって配置する点の数を500と入力し(ステップS201a)、球の球面上において上記入力された数の点を一様乱数に基づいて決定した座標に配置する(ステップS202)。上記配置された点に拘束条件を与え(ステップS203)、各点同士とその球の中心とがつくる扇形において中心角θを夫々算出する(ステップS204)。操作者によって下式(2)に示す指数関数p(θ)を作成してそれを評価関数として設定する(ステップS205a)。
【0032】
【数2】
【0033】
式(2)に示す関数p(θ)の大きさは、2点間の中心角θが小さいほど指数関数的に増加する。従って、式(2)に示す関数p(θ)の大きさを用いて、2点間の中心角θを下式(3)に示すように変化させることは、各点に対して指数関数の形状の斥力が作用していることと等価となる。
【0034】
【数3】
【0035】
次いで、上記設定された評価関数に基づいて各点を移動し(ステップS206)、試行回数100回を行ったか否かを判別して(ステップS207a)、試行回数100回を行ったときは、本処理を終了する。
【0036】
ステップS207aの判別の結果、試行回数100回を行っていないときは、ステップS204以降の処理を繰り返す。
【0037】
本実施例では、式(2)において、w=0.001とし、αは最大値を1として試行回数に反比例させて減少させる。
【0038】
本実施例では、球面上の1点を支点にして他の点との中心角θを算出し、p(θ)の大きさを元に他の点を移動させる。この手順を球面上の他の全ての点について行い、さらに、他の全ての点を支点にして一連の手順を行う。これら一連の手順を1回の試行とする。
【0039】
図4は、図3の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。また、比較対象として図3のステップS202における一様乱数を用いて球面上に点を配置した際のその点から発する電場を表現した図を示す(図5)。
【0040】
次に、図4及び図5に示した点が球面に対してどれほど均等に配置されているか、つまり、均等な点密度を持っているかの検証を行う。
【0041】
図6は、図3の点密度均等配置処理実行後において、球面上に配置された点の各点同士の中心角を全ての点の組み合わせについて算出し、0°〜180°まで1.8°間隔で、各点同士の中心角の角度がその範囲内に入る数の棒グラフである。結果を検証するため正弦関数のグラフを重ねて示す。また、比較対象として図3のステップS202における一様乱数を用いて球面上に点を配置した際の算出結果を示す(図7)。
【0042】
上記検証における、各点が球面にどれだけ均等に配置されているかは、図6及び図7の棒グラフの分布の形状が、正弦関数にどれだけ沿っているかが指標の一つとなる。
【0043】
なぜなら、(x’,y’,z’)座標系において下式(4)に示す球の球面上で、あるθ”に対してφ’を360°回転させたときの円周の長さは、2π・sin(θ”)で表される。従って、球面上に均等に点が配置されていれば微小面積2πsin(θ”)・Δθ”内に存在する点の数は、正弦関数sinθ”に比例することになる。
【0044】
【数4】
【0045】
図6を検証すると、本実施の形態による方法で計算を行った後の点の配置は、正弦関数にほぼ沿った分布をしていることが分かる。それに対し、図7に示した一様乱数で球面上に配置したものは、正弦関数からは分布の形が異なっている。これは、一様乱数で決定しているθ,φにおいて、θ=0°,180°の近傍の点密度が高くなるということが原因である。
【0046】
図8は、図2の点密度均等配置処理の他の実施例の手順を示すフローチャートである。
【0047】
図8の処理においても、図2の処理と基本的に同じであり、図2のステップと同一のステップには同一符号を伏して重複した説明を省略し、以下に図2の処理と異なる部分についてのみ説明する。
【0048】
図8において、まず、操作者によって配置する点の数を200と入力し(ステップS201b)、球の球面上において上記入力された数の点を一様乱数に基づいて決定した座標に配置する(ステップS202)。上記配置された点に拘束条件を与え(ステップS203)、各点同士とその球の中心とがつくる扇形において中心角θを夫々算出する(ステップS204)。操作者によって下式(5)に示す関数p2(θ)を作成してそれを評価関数として設定する(ステップS205a)。
【0049】
【数5】
【0050】
式(5)に示す関数p2(θ)の大きさは、2点間の中心角θが小さいほど増加する。従って、式(5)に示す関数p2(θ)の大きさを用いて、2点間の中心角θを式(3)に示すように変化させることは、各点に対して関数の形状の斥力が作用していることと等価となる。
【0051】
次いで、上記設定された評価関数に基づいて各点を移動し(ステップS206)、試行回数500回を行ったか否かを判別して(ステップS207b)、試行回数500回を行ったときは、本処理を終了する。
【0052】
ステップS207bの判別の結果、試行回数500回を行っていないときは、ステップS204以降の処理を繰り返す。
【0053】
本実施例では、式(5)において、w2=20とし、α2は最大値を1として試行回数に反比例させて減少させる。
【0054】
本実施例では、球面上の1点を支点にして他の点との中心角θを算出し、p2(θ)の大きさを元に他の点を移動させる。この手順を球面上の他の全ての点について行い、さらに、他の全ての点を支点にして一連の手順を行う。これら一連の手順を1回の試行とする。
【0055】
図9は、図8の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。また、比較対象として図8のステップS202における一様乱数を用いて球面上に点を配置した際のその点から発する電場を表現した図を示す(図10)。
【0056】
次に、図9及び図10に示した点が球面に対してどれほど均等に配置されているか、つまり、均等な点密度を持っているかの検証を行う。
【0057】
図11は、図8の点密度均等配置処理実行後において、球面上に配置された点の各点同士の中心角を全ての点の組み合わせについて算出し、0°〜180°まで1.8°間隔で、各点同士の中心角の角度がその範囲内に入る数の棒グラフである。結果を検証するため正弦関数のグラフを重ねて示す。また、比較対象として図8のステップS202における一様乱数を用いて球面上に点を配置した際の算出結果を示す(図12)。
【0058】
上記検証における、各点が球面にどれだけ均等に配置されているかにおいても、図11及び図12の棒グラフの分布の形状が、正弦関数にどれだけ沿っているかが指標の一つとなる。
【0059】
図11を検証すると、本実施の形態による方法で計算を行った後の点の配置は、正弦関数にほぼ沿った分布をしていることが分かる。それに対し、図12に示した一様乱数で球面上に配置したものは、正弦関数からは分布の形が異なっている。これは、一様乱数で決定しているθ,φにおいて、θ=0°,180°の近傍の点密度が高くなるということが原因である。
【0060】
また、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給する場合を考える。ここで、本発明の目的は、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【0061】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0062】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク等を用いることができる。あるいは、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW等の光ディスク、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【0063】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合だけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【0064】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合を考える。この場合に、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も本発明に含まれる。
【図面の簡単な説明】
【0065】
【図1】本発明の実施の形態に係る点密度均等配置装置の構成を概略的に示す図である。
【図2】図1におけるCPUによって実行される点密度均等配置処理の手順を示すフローチャートである。
【図3】図2の点密度均等配置処理の実施例の手順を示すフローチャートである。
【図4】図3の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。
【図5】図3のステップS202において球面上に配置された点のその点から発する電場を表現した図である。
【図6】図3の点密度均等配置処理実行後において、球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図7】図3のステップS202において球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図8】図2の点密度均等配置処理の他の実施例の手順を示すフローチャートである。
【図9】図8の点密度均等配置処理実行後において、球面上に配置された点のその点から発する電場を表現した図である。
【図10】図8のステップS202において球面上に配置された点のその点から発する電場を表現した図である。
【図11】図8の点密度均等配置処理実行後において、球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図12】図8のステップS202において球面上に配置された点の点密度がどれだけ均等であるかを検証するための棒グラフである。
【図13】従来の基準三角形を分割する方法を説明する図である。
【図14】従来の投影法を説明する図である。
【符号の説明】
【0066】
100 点密度均等配置装置
101 入力装置
102 コンピュータ本体
104 出力装置
105 CPU
【特許請求の範囲】
【請求項1】
所定の球面に配置する点の数を決定する決定ステップと、前記点を前記球面に夫々配置する配置ステップと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与ステップと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動ステップとを有することを特徴とする点密度均等配置方法。
【請求項2】
前記所定の評価は前記点同士の所定の値に依存した斥力に係る評価であることを特徴とする請求項1記載の点密度均等配置方法。
【請求項3】
前記点同士の所定の値は前記点同士と前記球の中心との中心角であることを特徴とする請求項2記載の点密度均等配置方法。
【請求項4】
前記斥力は前記中心角を変数とする関数で表されることを特徴とする請求項3記載の点密度均等配置方法。
【請求項5】
前記配置ステップは前記点を前記球面に夫々一様乱数に基づいて配置することを特徴とする請求項1乃至4のいずれか1項に記載の点密度均等配置方法。
【請求項6】
所定の球面に配置する点の数を決定する決定手段と、前記点を前記球面に夫々配置する配置手段と、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与手段と、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動手段とを有することを特徴とする点密度均等配置装置。
【請求項7】
前記所定の評価は前記点同士の所定の値に依存した斥力に係る評価であることを特徴とする請求項6記載の点密度均等配置装置。
【請求項8】
前記点同士の所定の値は前記点同士と前記球の中心との中心角であることを特徴とする請求項7記載の点密度均等配置装置。
【請求項9】
前記斥力は前記中心角を変数とする関数で表されることを特徴とする請求項8記載の点密度均等配置装置。
【請求項10】
前記配置手段は前記点を前記球面に夫々一様乱数に基づいて配置することを特徴とする請求項6乃至9のいずれか1項に記載の点密度均等配置装置。
【請求項11】
所定の球面に配置する点の数を決定する決定モジュールと、前記点を前記球面に夫々配置する配置モジュールと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与モジュールと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動モジュールとをコンピュータに実行させることを特徴とする点密度均等配置プログラム。
【請求項12】
請求項11記載のプログラムを格納するコンピュータ読み取り可能な記憶媒体。
【請求項1】
所定の球面に配置する点の数を決定する決定ステップと、前記点を前記球面に夫々配置する配置ステップと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与ステップと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動ステップとを有することを特徴とする点密度均等配置方法。
【請求項2】
前記所定の評価は前記点同士の所定の値に依存した斥力に係る評価であることを特徴とする請求項1記載の点密度均等配置方法。
【請求項3】
前記点同士の所定の値は前記点同士と前記球の中心との中心角であることを特徴とする請求項2記載の点密度均等配置方法。
【請求項4】
前記斥力は前記中心角を変数とする関数で表されることを特徴とする請求項3記載の点密度均等配置方法。
【請求項5】
前記配置ステップは前記点を前記球面に夫々一様乱数に基づいて配置することを特徴とする請求項1乃至4のいずれか1項に記載の点密度均等配置方法。
【請求項6】
所定の球面に配置する点の数を決定する決定手段と、前記点を前記球面に夫々配置する配置手段と、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与手段と、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動手段とを有することを特徴とする点密度均等配置装置。
【請求項7】
前記所定の評価は前記点同士の所定の値に依存した斥力に係る評価であることを特徴とする請求項6記載の点密度均等配置装置。
【請求項8】
前記点同士の所定の値は前記点同士と前記球の中心との中心角であることを特徴とする請求項7記載の点密度均等配置装置。
【請求項9】
前記斥力は前記中心角を変数とする関数で表されることを特徴とする請求項8記載の点密度均等配置装置。
【請求項10】
前記配置手段は前記点を前記球面に夫々一様乱数に基づいて配置することを特徴とする請求項6乃至9のいずれか1項に記載の点密度均等配置装置。
【請求項11】
所定の球面に配置する点の数を決定する決定モジュールと、前記点を前記球面に夫々配置する配置モジュールと、前記配置された点を前記球面に対して夫々拘束する拘束条件を付与する付与モジュールと、前記拘束条件の下で前記点を所定の評価に基づいて夫々移動する移動モジュールとをコンピュータに実行させることを特徴とする点密度均等配置プログラム。
【請求項12】
請求項11記載のプログラムを格納するコンピュータ読み取り可能な記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2007−156528(P2007−156528A)
【公開日】平成19年6月21日(2007.6.21)
【国際特許分類】
【出願番号】特願2005−346703(P2005−346703)
【出願日】平成17年11月30日(2005.11.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成19年6月21日(2007.6.21)
【国際特許分類】
【出願日】平成17年11月30日(2005.11.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]