以下に、本願の開示する輪郭特定装置、輪郭特定方法および輪郭特定プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[装置構成]
実施例1に係る輪郭特定装置について説明する。図1は、輪郭特定装置の全体構成を示す図である。輪郭特定装置10は、基板上の解析対象のモデルをメッシュにより離散化したメッシュによるモデル形状の輪郭を特定するコンピュータである。輪郭特定装置10は、CAD(Computer Aided Design)装置などのユーザによる回路設計を支援する回路設計ソフトウェアが動作する設計装置であってもよい。図1に示すように、輪郭特定装置10は、入力部20と、表示部21と、記憶部22と、制御部23とを有する。
入力部20は、各種の情報を入力する入力デバイスである。かかる入力部20の一態様としては、マウスやキーボードなどの操作受付デバイスが挙げられる。入力部20は、各種の情報の入力を受け付ける。例えば、入力部20は、電磁界解析を行う際に解析対象のモデルを離散化する直交格子のメッシュのサイズを設定する入力を受け付ける。また、入力部20は、設定したサイズのメッシュでの解析対象のモデルの離散化開始や、モデル形状の輪郭の特定を指示する指示入力を受け付ける。
表示部21は、各種情報を表示する表示デバイスである。かかる表示部21の一態様としては、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などの表示デバイスが挙げられる。表示部21は、各種情報を表示する。例えば、表示部21は、基板に対してFTDT法を採用した電磁界解析を行う際のメッシュのサイズなど各種条件を設定する設定画面を表示する。また、表示部21は、基板上の解析対象のモデルをメッシュにより離散化したメッシュによるモデル形状を表示する。
記憶部22は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部22は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
記憶部22は、制御部23で実行されるOS(Operating System)や後述する輪郭の特定に用いる各種プログラムを記憶する。さらに、記憶部22は、制御部23で実行されるプログラムで使用する各種データを記憶する。かかるデータの一例として、記憶部22は、CADデータ30と、メッシュデータ31と、2次元データ32と、設定値情報33と、状態情報34と、座標テーブル35と、XYソートデータ36と、YXソートデータ37と、表示用データ38とを記憶する。
CADデータ30は、基板に設計された回路に関する各種の情報を記憶したデータである。例えば、基板がプリント基板の場合、CADデータ30には、プリント基板内の各レイヤおよびレイヤ間の各種配線や各種素子、ホールなどの各要素の配置位置などの各種の情報が含まれている。CADデータ30は、輪郭特定装置10において設計されたものでもよい。また、CADデータ30は、図示しない外部I/F部を介して外部の装置から入力されたものであってもよい。一例として、CADデータ30は、後述の離散化部40によって参照される。
メッシュデータ31は、CADデータ30により示される基板を直交格子のメッシュにより離散化したメッシュによるモデル形状を示すデータである。一例として、メッシュデータ31は、後述の離散化部40によって生成される。他の一例として、メッシュデータ31は、後述の生成部41によって参照される。
2次元データ32は、メッシュにより離散化された基板を所定の平面で平面化したデータである。この2次元データ32は、平面化された矩形状のメッシュが含まれる場合、メッシュデータ31のどのメッシュを平面化したものかを示す情報、および、どの要素のメッシュであるかを示す情報を含む。一例として、2次元データ32は、後述の生成部41によって生成される。他の一例として、2次元データ32は、後述の割当部42、特定部48によって参照される。
設定値情報33は、矩形の4つの頂点にそれぞれ対応させる設定値が記憶されたデータである。矩形の4つの頂点にそれぞれ対応させる設定値は、それぞれを組み合わせた組み合わせ毎の合計値が異なるように定めている。一例として、設定値情報33は、輪郭特定ソフトウェアの作成元で予め登録されてもよい。また、設定値情報33は、管理者が入力部20あるいは、輪郭特定装置10と通信可能とされたクライアントコンピュータなどの端末装置から登録されてもよい。他の一例として、設定値情報33は、後述の割当部42によって参照される。
ここで、設定値の一例を説明する。図2は、矩形の4つの頂点にそれぞれ対応して定めた設定値の一例を示す図である。図2の例では、矩形50の左下の頂点51aには、設定値「1」が対応付けられている。矩形50の右下の頂点51bには、設定値「2」が対応付けられている。矩形50の右上の頂点51cには、設定値「4」が対応付けられている。矩形50の左上の頂点51dには、設定値「8」が対応付けられている。この4つの頂点51a〜51dに割り当てられた設定値は、それぞれを組み合わせた組み合わせ毎の合計値が異なる。以下に頂点51a〜51dの組み合わせと、組み合わせた頂点に対応する設定値、および設定値の合計値を示す。
[頂点の組み合わせ] [頂点に対応する設定値] [設定値の合計値]
頂点51a :1 :1
頂点51b :2 :2
頂点51a、51b :1、2 :3
頂点51c :4 :4
頂点51a、51c :1、4 :5
頂点51b、51c :2、4 :6
頂点51a、51b、51c :1、2、4 :7
頂点51d :8 :8
頂点51a、51d :1、8 :9
頂点51b、51d :2、8 :10
頂点51a、51b、51d :1、2、8 :11
頂点51c、51d :4、8 :12
頂点51a、51c、51d :1、4、8 :13
頂点51b、51c、51d :2、4、8 :14
頂点51a、51b、51c、51d:1、2、4、8 :15
このように、頂点51a〜51dを組み合わせた組み合わせ毎の合計値が異なることにより、頂点51a〜51dの組み合わせと合計値とは、1対1で対応する関係となる。すなわち、合計値から頂点51a〜51dの組み合わせが特定できるようになる。なお、矩形の4つの頂点に対応して定めた設定値「1」、「2」、「4」、「8」は一例であり、組み合わせ毎の合計値が異なれば何れの値としてもよい。また、組み合わせ毎の合計値は、連続した数値にならなくてもよい。
設定値情報33には、4つの頂点に対応して設定値が記憶されている。図3は、設定値情報の構成例を示す図である。図3に示すように、設定値情報33は、「頂点位置」、「設定値」の各項目を有する。頂点位置の項目は、矩形の頂点の位置を示す情報を格納する領域である。設定値の項目は、頂点に対応する設定値を格納する領域である。
図3の例では、矩形50の左下の頂点51aは、設定値が「1」であることを示す。また、矩形の右下の頂点51bは、設定値が「2」であることを示す。矩形の右上の頂点51cは、設定値が「4」であることを示す。矩形の左上の頂点51dは、設定値が「8」であることを示す。
状態情報34は、合計値毎の輪郭の状態を示す状態情報が記憶されたデータである。一例として、状態情報34は、輪郭特定ソフトウェアの作成元で予め登録されてもよい。また、状態情報34は、管理者が入力部20あるいは、輪郭特定装置10と通信可能とされたクライアントコンピュータなどの端末装置から登録されてもよい。他の一例として、状態情報34は、後述の特定部48によって参照される。
図4は、状態情報の構成例を示す図である。図4に示すように、状態情報34は、「合計値」、「状態」、「検索方向」の各項目を有する。合計値の項目は、設定値の組み合わせて得られる合計値を格納する領域である。本実施例では、合計値として、1〜4の設定値を組み合わせて得られる1〜15の値が格納されている。状態の項目は、合計値が示す頂点の状態を示す情報を格納する領域である。検索方向の項目は、輪郭検索の際に次に検索を行う方向を示す情報を格納する領域である。図4の構成例では、検索方向は輪郭形状に対して反時計方向に検索する事を想定して示している。時計方向に検索する場合は、検索方向を図4とは逆にすることで対応できる。
ここで、合計値と頂点の状態との関係について説明する。図5は、合計値と頂点の状態の関係を説明するための図である。図5の例は、2つの矩形のメッシュ55a、55bが隣り合っている場合を示す。このメッシュ55aの頂点56a、56b、56c、56dに対して、それぞれ設定値情報33に基づいて対応する設定値を割り当てた場合、頂点56aは、設定値「1」が割り当てられる。頂点56bは、設定値「2」が割り当てられる。頂点56cは、設定値「4」が割り当てられる。頂点56dは、設定値「8」が割り当てられる。同様に、メッシュ55bの頂点56b、56c、56e、56fに対して、それぞれ設定値情報33に基づいて対応する設定値を割り当てた場合、頂点56bは、設定値「1」が割り当てられる。頂点56eは、設定値「2」が割り当てられる。頂点56fは、設定値「3」が割り当てられる。頂点56cは、設定値「8」が割り当てられる。図4に示すようにメッシュ55a、55bが隣り合い、頂点56b、56cがメッシュ55a、55bにそれぞれ含まれる場合、頂点56bは、設定値「1」と「2」が割り当てられ、設定値の合計値が「3」となる。また、頂点56cは、設定値「4」と「8」が割り当てられ、設定値の合計値が「12」となる。この合計値は、上述のように、設定値の組み合わせ毎に異なる。このため、合計値から頂点の状態が判定できる。
状態情報34には、合計値毎に、頂点の状態が記憶されている。また、状態情報34には、合計値毎に、頂点の状態に応じて、輪郭検索の際の検索方向が記憶されている。
図4の例では、合計値が「1」の頂点は、矩形左下の独立した頂点であり、次に検索を行う方向が「右方向」であることを示す。合計値が「2」の頂点は、矩形右下の独立した頂点であり、次に検索を行う方向が「上方向」であることを示す。合計値が「3」の頂点は、左右に矩形が並ぶ下側の頂点であり、検索方向が変化しない通過点であるため、次に検索を行う方向が設定されていないことを示す。合計値が「4」の頂点は、矩形右上の独立した頂点であり、次に検索を行う方向が「左方向」であることを示す。合計値が「5」の頂点は、左下頂点と右上頂点が点接触した頂点であり、次に検索を行う方向の設定が、検索されてきた方向が上からの場合は「右方向」であり、検索されてきた方向が下からの場合は「左方向」であることを示す。合計値が「6」の頂点は、上下に矩形が並ぶ右側の頂点であり、検索方向が変化しない通過点であるため、次に検索を行う方向が設定されていないことを示す。合計値が「7」の頂点は、3つの矩形が隣り合う右下の入隅点となる頂点であり、次に検索を行う方向が「右方向」であることを示す。合計値が「8」の頂点は、矩形左上の独立した頂点であり、次に検索を行う方向が「下方向」であることを示す。合計値が「9」の頂点は、上下に矩形が並ぶ左側の頂点であり、検索方向が変化しない通過点であるため、次に検索を行う方向が設定されていないことを示す。合計値が「10」の頂点は、右下頂点と左上頂点が点接触した頂点であり、次に検索を行う方向の設定が、検索されてきた方向が右からの場合は「下方向」であり、検索されてきた方向が左からの場合は「上方向」であることを示す。合計値が「11」の頂点は、3つの矩形が隣り合う左下の入隅点となる頂点であり、次に検索を行う方向が「下方向」であることを示す。合計値が「12」の頂点は、左右に矩形が並ぶ上側の頂点であり、検索方向が変化しない通過点であるため、次に検索を行う方向が設定されていないことを示す。合計値が「13」の頂点は、3つの矩形が隣り合う左上の入隅点となる頂点であり、次に検索を行う方向が「左方向」であることを示す。合計値が「14」の頂点は、3つの矩形が隣り合う右上の入隅点となる頂点であり、次に検索を行う方向が「上方向」であることを示す。合計値が「15」の頂点は、4つの矩形が隣り合うモデル内部の内包点となる頂点であり、次に検索を行う方向が設定されていないことを示す。なお、図4の例では、状態および検索方向の項目にそれぞれの頂点の状態、検索方向を図により模式的に示している。
座標テーブル35は、解析対象のモデルを分割したメッシュの頂点に関する情報が記憶されたデータである。一例として、座標テーブル35は、後述の算出部43によって登録される。他の一例として、座標テーブル35は、後述の変更部46によって更新される。他の一例として、座標テーブル35は、後述の判定部45、ソート部44、特定部48によって参照される。
図6は、座標テーブルの構成例を示す図である。図6に示すように、座標テーブル35は、頂点毎に、頂点X,Y座標、合計値、入力データへのインデックスが並んで記憶されている。頂点X,Y座標は、頂点の位置を示すX,Y座標を記憶する領域である。合計値は、頂点に割り当てられた設定値を合計した合計値を記憶する領域である。入力データへのインデックスは、頂点が属するメッシュを示す情報を記憶する領域である。
ここで、解析対象のモデルを分割したメッシュの各頂点と座標テーブル35に記憶される情報との関係について説明する。図7は、メッシュの各頂点と座標テーブルに記憶される情報との関係について説明するための図である。図7の例は、解析対象のモデルが矩形のメッシュA〜Eに分割されている場合を示す。メッシュA〜Eは、(1)〜(13)の頂点を有する。
座標テーブル35には、解析対象のモデルを分割したメッシュの各頂点の座標位置、各頂点に設定値を割り当てて合計した合計値、頂点が属するメッシュを示す情報が記憶されている。なお、本実施例では、頂点のX,Y座標を、それぞれの頂点を示す(1)〜(13)により模式的に示している。
図6の例では、1番目の頂点は、頂点X,Y座標が「(1)」であり、合計値が「8」、頂点が属するメッシュが「A」であることを示す。2番目の頂点は、頂点X,Y座標が「(2)」であり、合計値が「4」であり、頂点が属するメッシュが「A」であることを示す。3番目の頂点は、頂点X,Y座標が「(3)」であり、合計値が「9」であり、頂点が属するメッシュが「A」と「B」であることを示す。4番目の頂点は、頂点X,Y座標が「(4)」であり、合計値が「14」であり、頂点が属するメッシュが「A」と「B」と「C」であることを示す。5番目の頂点は、頂点X,Y座標が「(5)」であり、合計値が「4」であり、頂点が属するメッシュが「C」であることを示す。6番目の頂点は、頂点X,Y座標が「(6)」であり、合計値が「1」であり、頂点が属するメッシュが「B」であることを示す。7番目の頂点は、頂点X,Y座標が「(7)」であり、合計値が「11」であり、頂点が属するメッシュが「B」と「C」と「D」であることを示す。8番目の頂点は、頂点X,Y座標が「(8)」であり、合計値が「6」であり、頂点が属するメッシュが「C」と「D」であることを示す。9番目の頂点は、頂点X,Y座標が「(9)」であり、合計値が「1」であり、頂点が属するメッシュが「D」であることを示す。10番目の頂点は、頂点X,Y座標が「(10)」であり、合計値が「10」であり、頂点が属するメッシュが「D」と「E」であることを示す。11番目の頂点は、頂点X,Y座標が「(11)」であり、合計値が「4」であり、頂点が属するメッシュが「E」であることを示す。12番目の頂点は、頂点X,Y座標が「(12)」であり、合計値が「1」であり、頂点が属するメッシュが「E」であることを示す。13番目の頂点は、頂点X,Y座標が「(13)」であり、合計値が「2」であり、頂点が属するメッシュが「E」であることを示す。
XYソートデータ36およびYXソートデータ37は、座標テーブル35に記憶された各頂点のデータを座標の配置位置の順にソートしたデータである。例えば、図7に示すメッシュの各頂点を設けられた平面の左右方向をX方向と上下方向をY方向とした場合、XYソートデータ36は、X方向、Y方向の順に優先して座標テーブル35に記憶された各頂点のデータをソートしたデータである。また、YXソートデータ37は、Y方向を優先して座標テーブル35に記憶された各頂点のデータをY方向、X方向の順に優先してソートしたデータである。図8は、図7に示した各頂点をX方向、Y方向の順に優先してソートする場合の頂点の順番を示した図である。図9は、図7に示した各頂点をY方向、X方向の順に優先してソートする場合の頂点の順番を示した図である。
なお、XYソートデータ36およびYXソートデータ37は、座標テーブル35に記憶された各頂点のデータを実際にソートしたものでもよく、また、座標テーブル35の各頂点のデータの記憶位置を示すポインタをソートしたものでもよい。本実施例では、各頂点のデータの位置を示すポインタをソートしてXYソートデータ36およびYXソートデータ37に記憶する。一例として、XYソートデータ36およびYXソートデータ37は、後述のソート部44によって登録される。他の一例として、XYソートデータ36およびYXソートデータ37は、後述の判定部45、特定部48によって参照される。
図10は、XYソートデータの構成例を示す図である。図9に示すように、XYソートデータ36は、X方向、Y方向の順にソートして図8に示した順に各頂点の記憶位置を示すポインタが記憶されている。図11は、YXソートデータの構成例を示す図である。図10に示すように、YXソートデータ37は、Y方向、X方向の順にソートして図8に示した順に各頂点の記憶位置を示すポインタが記憶されている。
表示用データ38は、解析対象のモデルの輪郭を表示するための表示用のデータである。一例として、表示用データ38は、後述の特定部48によって登録される。他の一例として、表示用データ38は、後述の出力部49によって参照される。
図1に戻り、制御部23は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部23には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。制御部23は、図1に示すように、離散化部40と、生成部41と、割当部42と、算出部43と、ソート部44と、判定部45と、変更部46と、削除部47と、特定部48と、出力部49とを有する。
このうち、離散化部40は、CADデータ30により示される基板を直交格子のメッシュにより離散化する処理部である。例えば、離散化部40は、CADデータ30により示される基板に配置された各種配線や各種素子、ホールなどの各要素を解析対象のモデルとして、入力部20から設定されたサイズのメッシュにより離散化する。そして、離散化部40は、離散化が完了すると、メッシュによるモデル形状を示したメッシュデータを生成して記憶部22に格納する。これにより、記憶部22には、メッシュデータ31が格納される。
生成部41は、メッシュデータ31により示されるメッシュによるモデル形状を所定の平面で平面化した2次元データを生成する処理部である。例えば、生成部41は、基板が複数層で構成されている場合、それぞれの層毎にモデル形状を平面化した2次元データを生成する。例えば、基板が複数のレイヤを含んだプリント基板の場合、生成部41は、各レイヤおよびレイヤ間の要素をそれぞれ平面化した2次元データを生成する。生成部41は、メッシュによるモデル形状を所定の平面で平面化した平面内に、平面化された矩形状のメッシュが含まれる場合、メッシュに対応付けて、メッシュデータのどのメッシュを平面化したものかを示す情報を2次元データに格納する。また、生成部41は、平面化された矩形状のメッシュが含まれる場合、メッシュに対応付けて、どの要素のメッシュであるかを示す情報も格納する。図12は、基板の一例を示す図である。図12の例は、上側の図が基板60の平面図を示し、下側の図が基板60の断面図を示す。図12の例では、基板60は、レイヤ61a、61bとレイヤ61a、61bを接続する要素62が設けられている。この基板60は、レイヤ61a、61bおよび要素62がそれぞれ別に平面化されて2次元データが生成される。生成部41は、生成した2次元データを記憶部22に格納する。これにより、記憶部22には、2次元データ32が格納される。
割当部42は、メッシュの各頂点に対して設定値情報33に基づき、対応する設定値を割り当てる処理部である。例えば、割当部42は、記憶部22から2次元データ32を読み出す。そして、割当部42は、それぞれの平面毎に、矩形のメッシュで分割された解析対象のモデルのメッシュの各頂点に対して設定値情報33に基づき、対応する設定値を割り当てる。
算出部43は、設定値を合計した合計値を算出する処理部である。例えば、算出部43は、それぞれの平面毎に、各頂点に割り当てられた設定値を頂点毎に合計した合計値を算出する。設定値情報33に定められた設定値は、組み合わせた組み合わせ毎の合計値が異なる。このため、合計値は、頂点を含むメッシュがどのように配置されているかに応じて異なり、頂点の状態を表す。算出部43は、それぞれの平面毎に、平面内での各頂点の座標、頂点を含むメッシュを特定し、平面毎に、各頂点の合計値、頂点の座標、頂点を含むメッシュを示す情報を座標テーブル35に格納する。
ソート部44は、座標テーブル35に記憶された各平面の頂点のデータを、平面毎に配置位置の順にソートしてXYソートデータ36およびYXソートデータ37を生成する処理部である。例えば、ソート部44は、平面毎に、座標の配置位置がX方向、Y方向の順に優先して、座標テーブル35に記憶された各頂点のデータの位置を示すポインタをソートしてXYソートデータ36を生成する。また、ソート部44は、平面毎に、座標の配置位置がY方向、X方向の順に優先して、座標テーブル35に記憶された各頂点のデータの位置を示すポインタをソートしてYXソートデータ37を生成する。ソート部44は、生成したXYソートデータ36およびYXソートデータ37を記憶部22に格納する。
ところで、頂点には、割り当てられた設定値の合計値が、「1」、「2」、「4」、「8」と設定値と同じになる頂点がある。この合計値が設定値と同じになる頂点には、次のように2つの種類がある。図13は、合計値が設定値になる頂点の状態を説明するための図である。図13の例は、2つの矩形のメッシュ55a、55bが縦に隣り合っており、メッシュ55aがメッシュ55bよりも幅が狭く、メッシュ55a、55bの右側が揃っている場合を示す。メッシュ55aの頂点56a、56b、56c、56dに対して、それぞれ設定値情報33に基づいて対応する設定値を割り当てた場合、頂点56aは、設定値「1」が割り当てられる。頂点56bは、設定値「2」が割り当てられる。頂点56cは、設定値「4」が割り当てられる。頂点56dは、設定値「8」が割り当てられる。メッシュ55bの頂点56b、56dに対して、それぞれ設定値情報33に基づいて対応する設定値を割り当てた場合、頂点56bは、設定値「4」が割り当てられる。頂点56eは、設定値「8」が割り当てられる。それぞれの頂点に対して割り当てた設定値を合計した場合、頂点56bは、2つの設定値、「2」と「4」が割り当てられているため、合計値が「6」となる。一方、頂点56a、56c、56d、56eは、それぞれ割り当てられた設定値が1つであるため、合計値が設定値となる。この合計値が設定値となる頂点56a、56c、56d、56eには、頂点56c、56d、56eに示すように、2つの直線が出合った出隅となる頂点と、頂点56aに示すように、2つの直線が出合った入隅となる頂点がある。
図14は、入隅となる頂点のパターンを示した図である。図14に示すように、頂点52a〜52hは、それぞれ合計値が設定値になる入隅の頂点である。
判定部45は、合計値が何れかの設定値である頂点が隣接するメッシュの辺上に位置する入隅の頂点であるか判定する処理部である。判定部45は、座標テーブル35から合計値が何れかの設定値である頂点の座標を読み出す。そして、判定部45は、読み出した頂点の座標から上下に隣接する頂点を特定する。例えば、判定部45は、XYソートデータ36において、読み出した頂点のポインタに対し、データ順が前後のポインタを特定し、特定したポインタから頂点を特定する。
例えば、図10に示すように、XYソートデータ36には、図8に示すように、X方向、Y方向の順にソートして頂点の位置を示すポインタが記憶されている。このため、XYソートデータ36において、読み出した頂点のポインタに対してデータ順が前後のポインタが示す頂点は、読み出した頂点に対して上下に隣接する頂点がある場合、上下に隣接する頂点を示す。例えば、図10の(3)のポインタに対してデータ順が前後の(6)(1)のポインタは、図8に示すように、(3)の頂点の上下に隣接する(6)(1)の頂点を示す。一方、例えば、図10の(1)のポインタに対してデータ順が前後の(3)(9)のポインタは、図8に示すように、(1)の頂点の下側に隣接する(3)の頂点およびX方向が異なる(9)の頂点を示す。また、例えば、図10の(9)のポインタに対してデータ順が前後の(1)(7)のポインタは、図8に示すように、(9)の頂点の上側に隣接する(7)の頂点およびX方向が異なる(1)の頂点を示す。
判定部45は、座標テーブル35に基づき、特定した2つの頂点の座標地位および属するメッシュを比較し、2つの頂点のX方向の位置が同じでかつ同じメッシュに属する場合、読み出した頂点を入隅の頂点と判定する。例えば、図14の頂点52e〜52hは、上下に隣接する頂点のX方向の位置が同じでかつ同じメッシュに属する。よって、判定部45は、XYソートデータ36において読み出した頂点のポインタに対してデータ順が前後の頂点のX方向の位置が同じでかつ同じメッシュに属するかを判定することにより、図14の頂点52e〜52hのパターンの入隅の頂点を判定できる。
また、判定部45は、読み出した頂点の座標から左右に隣接する頂点を特定する。例えば、判定部45は、YXソートデータ37において、読み出した頂点のポインタに対し、データ順が前後のポインタを特定し、特定したポインタから頂点を特定する。
例えば、図11に示すように、YXソートデータ37には、図9に示すように、Y方向、X方向の順にソートして頂点の位置を示すポインタが記憶されている。このため、YXソートデータ37において、読み出した頂点のポインタに対してデータ順が前後のポインタが示す頂点は、読み出した頂点に対して左右に隣接する頂点がある場合、左右に隣接する頂点を示す。例えば、図11の(4)のポインタに対してデータ順が前後の(3)(5)のポインタは、図9に示すように、(4)の頂点の左右に隣接する(3)(5)の頂点を示す。一方、例えば、図11の(5)のポインタに対してデータ順が前後の(4)(1)のポインタは、図9に示すように、(5)の頂点の左側に隣接する(4)の頂点およびY方向が異なる(1)の頂点を示す。また、例えば、図11の(1)のポインタに対してデータ順が前後の(5)(1)のポインタは、図9に示すように、(1)の頂点の右側に隣接する(2)の頂点およびY方向が異なる(5)の頂点を示す。
判定部45は、座標テーブル35に基づき、特定した2つの頂点の座標地位および属するメッシュを比較し、2つの頂点のY方向の位置が同じでかつ同じメッシュに属する場合、読み出した頂点を入隅の頂点と判定する。図14の頂点52a〜52dは、左右に隣接する頂点のY方向の位置が同じでかつ同じメッシュに属する。よって、判定部45は、YXソートデータ37において読み出した頂点のポインタに対してデータ順が前後の頂点のY方向の位置が同じでかつ同じメッシュに属するかを判定することにより、図14の頂点52a〜52dのパターンの入隅の頂点を判定できる。
変更部46は、判定部45により隣接するメッシュの辺上に位置する入隅の頂点であると判定された頂点の座標テーブル35に記憶された合計値を変更する処理部である。例えば、変更部46は、入隅の頂点であると判定された頂点の合計値を、3つのメッシュの頂点が重なり合って同様の入隅の状態となった頂点を示す合計値に変更する。例えば、図14に示すように、変更部46は、合計値が「1」であり、左右に隣接する頂点が同じメッシュに属する頂点52aの合計値を「13」に変更する。また、変更部46は、合計値が「2」であり、左右に隣接する頂点が同じメッシュに属する頂点52bの合計値を「14」に変更する。また、変更部46は、合計値が「4」であり、左右に隣接する頂点が同じメッシュに属する頂点52cの合計値を「7」に変更する。また、変更部46は、合計値が「8」であり、左右に隣接する頂点が同じメッシュに属する頂点52dの合計値を「11」に変更する。また、変更部46は、合計値が「1」であり、上下に隣接する頂点が同じメッシュに属する頂点52eの合計値を「7」に変更する。また、変更部46は、合計値が「2」であり、上下に隣接する頂点が同じメッシュに属する頂点52fの合計値を「11」に変更する。また、変更部46は、合計値が「4」であり、上下に隣接する頂点が同じメッシュに属する頂点52gの合計値を「13」に変更する。また、変更部46は、合計値が「8」であり、上下に隣接する頂点が同じメッシュに属する頂点52hの合計値を「14」に変更する。
ところで、合計値が「3」、「6」、「9」、「12」となる頂点は、図4に示す状態情報34の状態に示すように、頂点が2並んだ矩形の間にあり、解析対象のモデルの形状をベクトルデータとして記憶する場合、不要な点である。また、合計値が「15」となる頂点は、図4に示す状態情報34の状態に示すように、解析対象のモデル内に内包された点であり、解析対象のモデルの形状を特定する際に不要な点である。
削除部47は、解析対象のモデルの形状を特定する際に不要な頂点を座標テーブル35、XYソートデータ36およびYXソートデータ37から削除する処理部である。例えば、削除部47は、座標テーブル35、XYソートデータ36およびYXソートデータ37から合計値が「3」、「6」、「9」、「12」、「15」となる頂点のデータを削除する。例えば、図7に示すように、(1)〜(13)の頂点のデータが座標テーブル35、XYソートデータ36およびYXソートデータ37に記憶されていた場合、削除部47は、図15に示すように、(3)(8)の頂点のデータを削除する。図15は、図7から不要な頂点を削除した結果を示す図である。これにより、データが座標テーブル35、XYソートデータ36およびYXソートデータ37には、(1)、(2)、(4)〜(7)、(9)〜(13)の各頂点のデータが記憶される。図16は、図6から不要な頂点のデータを削除した座標テーブルの構成例を示す図である。図17は、図10から不要な頂点のデータを削除したXYソートデータの構成例を示す図である。図18は、図11から不要な頂点のデータを削除したYXソートデータの構成例を示す図である。
特定部48は、解析対象のモデルの輪郭の形状を特定する処理部である。例えば、特定部48は、2次元データ32から平面毎に要素を順に選択する。そして、特定部48は、選択した要素のメッシュが1つの場合、選択した要素の1つメッシュを輪郭と特定する。一方、特定部48は、選択した要素のメッシュが1つでない場合、2次元データ32から選択した要素の各メッシュを特定する。特定部48は、特定した各メッシュの頂点のうち、座標テーブル35に記憶された合計値が5、10以外の何れかの頂点を選択する。そして、特定部48は、選択した頂点を開始点とする。また、特定部48は、選択した頂点を処理対象の頂点として、状態情報34に基づき、処理対象の頂点の合計値に応じた輪郭の検索方向を特定する。ここで、合計値が5、10の頂点は、1つ前の頂点から検索されてきた検索方向が定まらないと、検索方向が特定できない。このため、合計値が5、10の頂点を開始点の対象から外している。
特定部48は、処理対象の頂点から検索方向に検索を行って次の頂点を特定する。特定部48は、次の頂点が開始点となった場合、検索により輪郭が特定されたため、検索で通過した頂点の座標から輪郭の形状を示すベクトルデータを生成し、生成したデータを表示用データ38として記憶部22に格納する。特定部48は、選択した要素の各メッシュの頂点に、輪郭が特定できていない頂点がある場合、輪郭が特定できていない頂点を選択し、選択した頂点を開始点として輪郭の特定を繰り返す。一方、特定部48は、特定された各メッシュの全ての頂点について輪郭が特定できた場合、選択した要素の輪郭が特定できたものとして、次の要素を選択し、選択した要素の輪郭の特定を繰り返す。
例えば、頂点が図15の場合を例にして、特定部48が輪郭を検索する流れの一例を説明する。ここで、図16に示す座標テーブル35には、図15の各頂点のX,Y座標、合計値、頂点が属するメッシュが記憶されている。図17に示すXYソートデータ36には、図16の各頂点のデータへのポインタがX方向、Y方向の順に優先してソートされて格納されている。図18に示すYXソートデータ37には、図16の各頂点のデータへのポインタがY方向、X方向の順に優先してソートされて格納されている。
図15に示すメッシュA〜Eは、同じ要素を離散化したメッシュであるものとする。特定部48は、合計値が5、10以外の何れかの頂点を選択する。図15の例では、図16に示すように合計値が5、10以外の(1)、(2)、(4)〜(7)、(9)、(11)〜(13)の頂点から選択される。例えば、特定部48は、(1)の頂点を選択する。特定部48は、(1)の頂点を開始点とする。特定部48は、(1)の頂点を処理対象の頂点として、状態情報34に基づき、(1)の頂点の合計値に応じた輪郭の検索方向を特定する。図16に示すように、(1)の頂点の合計値は、「8」である。このため、検索方向は、図4に示す状態情報34から合計値が「4」に対応する「下方向」と特定される。特定部48は、下方向に次の頂点の検索を行って次の頂点を特定する。
ここで、特定部48は、下方向に次の頂点を検索する場合、XYソートデータ36から処理対象の頂点へのポインタに対し、データ順が前のポインタを特定し、特定したポインタから頂点を特定する。また、特定部48は、上方向に次の頂点を検索する場合、XYソートデータ36から処理対象の頂点へのポインタに対し、データ順が後のポインタを特定し、特定したポインタから頂点を特定する。また、特定部48は、左方向に次の頂点を検索する場合、YXソートデータ37から処理対象の頂点へのポインタに対し、データ順が前のポインタを特定し、特定したポインタから頂点を特定する。また、特定部48は、右方向に次の頂点を検索する場合、YXソートデータ37から処理対象の頂点へのポインタに対し、データ順が後のポインタを特定し、特定したポインタから頂点を特定する。
例えば、特定部48は、図17に示すXYソートデータ36から(1)の頂点へのポインタに対し、データ順が前の(6)の頂点へのポインタを特定し、特定したポインタから(6)の頂点を特定する。
特定部48は、(6)の頂点が開始点である(1)の頂点ではないため、(6)の頂点を処理対象の頂点として、状態情報34に基づき、(6)の頂点の合計値に応じた輪郭の検索方向を特定する。(6)の頂点は、図16に示すように合計値が「1」であるため、図4に示す状態情報34から検索方向が「右方向」と特定される。特定部48は、図18に示すYXソートデータ37から(6)の頂点へのポインタに対し、データ順が後の(7)の頂点へのポインタを特定し、特定したポインタから(7)の頂点を特定する。
特定部48は、(7)の頂点が開始点である(1)の頂点ではないため、(7)の頂点を処理対象の頂点として、状態情報34に基づき、(7)の頂点の合計値に応じた輪郭の検索方向を特定する。(7)の頂点は、図16に示すように合計値が「11」であるため、図4に示す状態情報34から検索方向が「下方向」と特定される。特定部48は、図17に示すXYソートデータ36から(7)の頂点へのポインタに対し、データ順が前の(9)の頂点へのポインタを特定し、特定したポインタから(9)の頂点を特定する。
特定部48は、(9)の頂点が開始点である(1)の頂点ではないため、(9)の頂点を処理対象の頂点として、状態情報34に基づき、(9)の頂点の合計値に応じた輪郭の検索方向を特定する。(9)の頂点は、図16に示すように合計値が「1」であるため、図4に示す状態情報34から検索方向が「右方向」と特定される。特定部48は、図18に示すYXソートデータ37から(9)の頂点へのポインタに対し、データ順が後の(10)の頂点へのポインタを特定し、特定したポインタから(10)の頂点を特定する。
特定部48は、(10)の頂点が開始点である(1)の頂点ではないため、(10)の頂点を処理対象の頂点として、状態情報34に基づき、(10)の頂点の合計値に応じた輪郭の検索方向を特定する。(10)の頂点は、図16に示すように合計値が「10」である。図4に示す状態情報34では、合計値が「10」の検索方向は、検索されてきた方向が「右」からの場合、「下方向」であり、検索されてきた方向が「左」からの場合、「上方向」とされている。(10)の頂点は、左側の(9)の頂点から検索されてきたため、検索されてきた方向が「左」である。このため、検索方向が「上方向」と特定される。特定部48は、図17に示すXYソートデータ36から(10)の頂点へのポインタに対し、データ順が後の(5)の頂点へのポインタを特定し、特定したポインタから(5)の頂点を特定する。
特定部48は、(5)の頂点が開始点である(1)の頂点ではないため、(5)の頂点を処理対象の頂点として、状態情報34に基づき、(5)の頂点の合計値に応じた輪郭の検索方向を特定する。(5)の頂点は、図16に示すように合計値が「4」であるため、図4に示す状態情報34から検索方向が「左方向」と特定される。特定部48は、図18に示すYXソートデータ37から(5)の頂点へのポインタに対し、データ順が前の(4)の頂点へのポインタを特定し、特定したポインタから(4)の頂点を特定する。
特定部48は、(4)の頂点が開始点である(1)の頂点ではないため、(4)の頂点を処理対象の頂点として、状態情報34に基づき、(4)の頂点の合計値に応じた輪郭の検索方向を特定する。(4)の頂点は、図16に示すように合計値が「14」であるため、図4に示す状態情報34から検索方向が「上方向」と特定される。特定部48は、図17に示すXYソートデータ36から(4)の頂点へのポインタに対し、データ順が後の(2)の頂点へのポインタを特定し、特定したポインタから(2)の頂点を特定する。
特定部48は、(2)の頂点が開始点である(1)の頂点ではないため、(2)の頂点を処理対象の頂点として、状態情報34に基づき、(2)の頂点の合計値に応じた輪郭の検索方向を特定する。(2)の頂点は、図16に示すように合計値が「4」であるため、図4に示す状態情報34から検索方向が「左方向」と特定される。特定部48は、図18に示すYXソートデータ37から(2)の頂点へのポインタに対し、データ順が前の(1)の頂点へのポインタを特定し、特定したポインタから(1)の頂点を特定する。
特定部48は、特定した(1)の頂点が開始点である(1)の頂点であるため、検索した経路の(1)、(6)、(7)、(9)、(10)、(5)、(4)、(2)の各頂点の座標から輪郭の形状を示すベクトルデータを生成して記憶部22に格納する。
また、図15に示す例の場合、(11)〜(13)の頂点は、輪郭が特定できていない。特定部48は、輪郭が特定できていない(11)〜(13)の頂点の何れかを選択し、選択した頂点を開始点として輪郭の特定を繰り返す。図15には、このようにして特定された2つの輪郭を示す多角形の頂点の座標が示されている。
出力部49は、表示部21への画像の出力を行う処理部である。例えば、出力部49は、表示用データ38に基づいて、特定した輪郭によるモデル形状の画像を表示部21へ出力する。
ユーザは、表示部21にされた輪郭によるモデル形状を元のモデル形状を参照しながら、モデルが適切に分割されているか確認を行う。
ここで、表示部21に表示される画像について説明する。図19は、FTDT法による解析を行う要素の一例を示す図である。図19の例では、解析を行う要素として、基板に配線70が配置されている。図20は、要素をメッシュにより離散化した結果の一例を示す図である。図20の例では、配線70がメッシュにより22個の矩形に分割されている。図21は、離散化した要素の輪郭を特定した結果の一例を示す図である。図21の例では、メッシュにより離散化された配線70の輪郭が示されている。
図20に示す配線70をメッシュにより離散化した画像を表示部21に表示する場合、配線70がメッシュにより22個の矩形の描画に用いる頂点は88個となる。一方、図21に配線70の輪郭の画像を表示部21に表示する場合、配線70が1個の多角形になり、描画に用いる頂点は、メッシュで表示する場合より24個に削減される。
このように、輪郭特定装置10は、輪郭を特定して表示することにより、描画に用いる頂点が減り、描画する線の数も減るため、描画の負荷を軽減できる。
一例として、回路設定が行われたプリント基板をFTDT法による電磁界解析を行うためにメッシュで離散化した場合、メッシュの数が970,792,308個であった。この基板を所定の面を表示した場合、表示する辺の数が16,470,856個であった。この同じ面に対して輪郭を特定して表示を行った場合、表示する辺の数が4,148,261個となり、表示する辺の数が74.8%削減された。また、表示に要するメモリも30.7M削減された。図22は、メッシュで離散化した基板の所定の面を表示した一例を示す図である。図22の例は、配線の状態を判別しやすくするため、基板の一部を拡大している。図23は、図22と同じ面に対して輪郭を特定して表示した一例を示す図である。図23の例は、図22と同じ部分を示している。図22に示すように、メッシュで離散化する場合、配線70の斜めに配置された部分は、非常に多数のメッシュに分割される。一方、図23に示すように、輪郭を特定して表示した場合、配線70の描画に用いる頂点が減り、描画する線の数も減るため、描画の負荷を軽減される。
[処理の流れ]
次に、本実施例に係る輪郭特定装置10により、メッシュデータにより示されるモデル形状の輪郭を特定する輪郭特定処理の流れを説明する。図24は、輪郭特定処理の手順を示すフローチャートである。この輪郭特定処理は、例えば、入力部20からメッシュデータにより示されるモデル形状の輪郭の特定を指示する所定操作が行われたタイミングで実行される。なお、輪郭特定処理は、CADデータ30に対する離間化処理に引き続き実行されてもよい。
図24に示すように、生成部41は、メッシュデータ31により示されるメッシュによるモデル形状を所定の平面で平面化した2次元データを生成する(S10)。例えば、生成部41は、基板が複数層で構成されている場合、それぞれの層毎にモデル形状を平面化した2次元データを生成する。特定部48は、2次元データ32から輪郭を特定する処理対象の平面を選択する(S11)。また、特定部48は、選択した処理対象の平面から輪郭を特定する処理対象の要素を選択する(S12)。特定部48は、選択した処理対象の要素のメッシュが1つであるか否かを判定する(S13)。メッシュが1つである場合(S13肯定)、特定部48は、1つメッシュを輪郭と特定し(S14)、後述するS19へ移行する。
一方、処理対象の要素のメッシュが1つではない場合(S13否定)、割当部42、算出部43およびソート部44が、輪郭を特定するため後述する準備処理を行う(S15)。準備処理の終了後、判定部45および変更部46が、後述する入隅点検出処理を行う(S16)。入隅点検出処理の終了後、削除部47は、不要な頂点を座標テーブル35、XYソートデータ36およびYXソートデータ37から削除する(S17)。そして、特定部48が、輪郭を抽出するため後述する抽出処理を行う(S18)。
特定部48は、処理対象の平面の全ての要素に対する輪郭の特定が完了したか否かを判定する(S19)。全ての要素に対する輪郭の特定が完了していない場合(S19否定)、上述のS12へ移行する。一方、全ての要素に対する輪郭の特定が完了した場合(S19肯定)、特定部48は、2次元データ32の全ての平面に対する処理が完了したか否かを判定する(S20)。全ての平面に対する処理が完了していない場合(S20否定)、上述のS11へ移行する。一方、全ての平面に対する処理が完了した場合(S20肯定)、処理を終了する。
次に、本実施例に係る準備処理の流れについて説明する。図25は、準備処理の手順を示すフローチャートである。この準備処理は、図24に示す輪郭特定処理のS15から呼び出されて実行される。
図25に示すように、割当部42は、処理対象の要素の全てのメッシュに対する処理が完了したか否かを判定する(S30)。全てのメッシュに対する処理が完了していない場合(S30否定)、割当部42は、未処理のメッシュを1つ選択する(S31)。割当部42は、変数nを1に初期化する(S32)。割当部42は、変数nが1であるか否かを判定する(S33)。変数nが1である場合(S33肯定)、割当部42は、選択したメッシュの左下の頂点を処理対象の頂点と特定する(S34)。一方、変数nが1ではない場合(S33否定)、割当部42は、変数nが2であるか否かを判定する(S35)。変数nが2である場合(S35肯定)、割当部42は、選択したメッシュの右下の頂点を処理対象の頂点と特定する(S36)。一方、変数nが2ではない場合(S35否定)、割当部42は、変数nが3であるか否かを判定する(S37)。変数nが3である場合(S37肯定)、割当部42は、選択したメッシュの右上の頂点を処理対象の頂点と特定する(S38)。一方、変数nが3ではない場合(S37否定)、割当部42は、選択したメッシュの左上の頂点を処理対象の頂点と特定する(S39)。
割当部42は、設定値情報33から、処理対象とされた頂点に対応する設定値を読み出す(S40)。算出部43は、処理対象とされた頂点の座標で座標テーブル35を検索する(S41)。算出部43は、検索の結果、座標テーブル35に同じ座標のデータがあるか否かを判定する(S42)。同じ座標のデータがない場合(S42否定)、算出部43は、処理対象とされた頂点の設定値、頂点の座標、頂点を含むメッシュを示す情報を座標テーブル35に追加する(S43)。一方、同じ座標のデータがある場合(S42肯定)、算出部43は、既に記憶された同じ座標のデータに処理対象とされた頂点の設定値を加算する(S44)。
割当部42は、変数nが4であるか否かを判定する(S45)。変数nが4ではない場合(S45否定)、割当部42は、変数nの値に1を加算し(S46)、上述のS33へ移行する。一方、変数nが4である場合(S45肯定)、上述のS30へ移行する。
一方、全てのメッシュに対する処理が完了した場合(S30肯定)、ソート部44は、頂点の配置位置の順に座標テーブル35のデータをソートしてXYソートデータ36およびYXソートデータ37を生成し(S47)、処理を終了して呼び出し元の処理へ戻る。
次に、本実施例に係る入隅点検出処理の流れについて説明する。図26は、入隅点検出処理の手順を示すフローチャートである。この入隅点検出処理は、図24に示す輪郭特定処理のS16から呼び出されて実行される。
図26に示すように、判定部45は、XYソートデータ36の順に頂点を選択する(S50)。判定部45は、選択した頂点が座標テーブル35で合計値が何れかの設定値となる頂点であるか否かを判定する(S51)。合計値が何れかの設定値となる頂点ではない場合(S51否定)、後述するS55へ移行する。一方、合計値が何れかの設定値となる頂点である場合(S51肯定)、XYソートデータ36に基づき、選択した頂点の左右の頂点を特定する(S52)。判定部45は、左右の頂点のY方向の位置が同じでかつ同じメッシュに属するか否かを判定する(S53)。左右の頂点のY方向の位置が異なるまたは同じメッシュに属さない場合(S53否定)、後述するS55へ移行する。一方、左右の頂点のY方向の位置が同じでかつ同じメッシュに属する場合(S53肯定)、変更部46は、選択された頂点の座標テーブル35に記憶された合計値を次のように変更する。すなわち、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が1の場合、合計値を13に変更する。また、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が2の場合、合計値を14に変更する。また、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が4の場合、合計値を7に変更する。また、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が8の場合、合計値を11に変更する(S54)。
判定部45は、XYソートデータ36の順に全ての頂点を選択が完了したか否かを判定する(S55)。全ての頂点の選択が完了していない場合(S55否定)、上述のS50へ移行する。全ての頂点を選択が完了した場合(S55肯定)、判定部45は、YXソートデータ37の順に頂点を選択する(S56)。
判定部45は、選択した頂点が座標テーブル35で合計値が何れかの設定値となる頂点であるか否かを判定する(S57)。合計値が何れかの設定値となる頂点ではない場合(S57否定)、後述するS61へ移行する。一方、合計値が何れかの設定値となる頂点である場合(S57肯定)、YXソートデータ37に基づき、選択した頂点の上下の頂点を特定する(S58)。判定部45は、上下の頂点のX方向の位置が同じでかつ同じメッシュに属するか否かを判定する(S59)。上下の頂点のX方向の位置が異なるまたは同じメッシュに属さない場合(S59否定)、後述するS61へ移行する。一方、上下の頂点のX方向の位置が同じでかつ同じメッシュに属する場合(S59肯定)、変更部46は、選択された頂点の座標テーブル35に記憶された合計値を次のように変更する(S60)。すなわち、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が1の場合、合計値を7に変更する。また、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が2の場合、合計値を11に変更する。また、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が4の場合、合計値を13に変更する。また、変更部46は、選択された頂点の座標テーブル35に記憶された合計値が8の場合、合計値を14に変更する。
判定部45は、YXソートデータ37の順に全ての頂点を選択が完了したか否かを判定する(S61)。全ての頂点を選択が完了していない場合(S61否定)、上述のS56へ移行する。全ての頂点を選択が完了した場合(S61肯定)、処理を終了して呼び出し元の処理へ戻る。
次に、本実施例に係る輪郭を抽出する抽出処理の流れについて説明する。図27は、抽出処理の手順を示すフローチャートである。この抽出処理は、図27に示す輪郭特定処理のS18から呼び出されて実行される。
図27に示すように、特定部48は、座標テーブル35に、処理対象の要素の各メッシュの頂点に、合計値が5、10以外の未処理の頂点があるか否かを判定する(S70)。ここで、処理済みの頂点は、後述するS82において合計値を−1に更新される。このため、特定部48は、処理対象の要素の各メッシュの頂点に、合計値が−1、5、10以外の頂点があるか否かを判定する。合計値が−1、5、10以外の頂点がない場合(S70否定)、処理対象の要素の各メッシュの全ての頂点の輪郭が特定できたため、処理を終了して呼び出し元の処理へ戻る。
合計値が−1、5、10以外の頂点がある場合(S70肯定)、特定部48は、処理対象の要素の各メッシュの頂点から合計値が−1、5、10以外の頂点を選択する(S71)。特定部48は、選択した頂点を開始点に設定する(S72)。特定部48は、選択した頂点を、処理対象の頂点として、状態情報34に基づき、処理対象の頂点の合計値に応じた輪郭の検索方向を特定する(S73)。
特定部48は、輪郭の検索方向が下方向であるか否かを判定する(S74)。検索方向が下方向である場合(S74肯定)、特定部48は、XYソートデータ36から処理対象の頂点へのポインタに対し、データ順が前のポインタを特定し、特定したポインタから頂点を特定する(S75)。
一方、検索方向が下方向ではない場合(S74否定)、特定部48は、検索方向が上方向であるか否かを判定する(S76)。検索方向が上方向である場合(S76肯定)、特定部48は、XYソートデータ36から処理対象の頂点へのポインタに対し、データ順が後のポインタを特定し、特定したポインタから頂点を特定する(S77)。
一方、検索方向が上方向ではない場合(S76否定)、特定部48は、検索方向が左方向であるか否かを判定する(S78)。検索方向が左方向である場合(S78肯定)、特定部48は、YXソートデータ37から処理対象の頂点へのポインタに対し、データ順が前のポインタを特定し、特定したポインタから頂点を特定する(S79)。
一方、検索方向が左方向ではない場合(S78否定)、検索方向が残った右方向であるため、特定部48は、YXソートデータ37から処理対象の頂点へのポインタに対し、データ順が後のポインタを特定し、特定したポインタから頂点を特定する(S80)。
特定部48は、処理対象の頂点の合計値が5または10であるか判定する(S81)。処理対象の頂点の合計値が5または10ではない場合(S81否定)、特定部48は、座標テーブル35の処理対象の頂点の合計値を−1に更新する。一方、処理対象の頂点の合計値が5または10である場合(S81肯定)、合計値の更新を行わず、S83へ移行する。これは、合計値が5または10の頂点は、2つのメッシュが点接触している頂点であり、輪郭を求めるために2度、合計値が参照されるためである。
特定部48は、特定した頂点が開始点であるか否かを判定する(S83)。特定した頂点が開始点ではない場合(S83否定)、特定部48は、特定した頂点を処理対象の頂点に設定し(S84)、上述のS73へ移行する。特定した頂点が開始点である場合(S83肯定)、開始点以降に通過した頂点の座標から輪郭の形状を示すベクトルデータを生成し、生成したデータを表示用データ38として記憶部22に格納し、上述のS70へ移行する。
[実施例1の効果]
本実施例に係る輪郭特定装置10は、矩形の4つの頂点にそれぞれ対応して、それぞれを組み合わせた組み合わせ毎の合計値が異なるように定めた設定値を示す設定値情報および前記合計値毎の輪郭の状態を示す状態情報34を記憶部22に記憶する。輪郭特定装置10は、矩形のメッシュで分割された解析対象のモデルのメッシュの各頂点に対して設定値情報に基づき、対応する設定値を割り当てる。輪郭特定装置10は、割り当てられた設定値を頂点毎に合計した合計値を算出する。そして、輪郭特定装置10は、状態情報に基づき、頂点毎の合計値から解析対象のモデルの輪郭の形状を特定する。このように、輪郭特定装置10は、解析対象のモデルのメッシュの各頂点に対して設定値を割り当て、頂点毎に割り当てられた設定値を合計した合計値を求めるという簡単な演算で、合計値から頂点の状態を特定でき、頂点の状態から輪郭の形状を特定できる。よって、輪郭特定装置10は、特定した輪郭の形状に従って解析対象のモデルの輪郭の描画を行うことにより、描画の負荷を軽減できる。
また、本実施例に係る輪郭特定装置10は、合計値毎に輪郭の検索方向を示す方向情報をさらに記憶する。輪郭特定装置10は、方向情報に基づき、頂点から当該頂点の合計値に応じた検索方向に輪郭の検索を行って前記解析対象のモデルの外形の頂点となる輪郭点を特定する。そして、輪郭特定装置10は、ベクトルデータとして解析対象のモデルの輪郭の形状を特定する。よって、輪郭特定装置10は、ベクトルデータとして解析対象のモデルの輪郭の形状を特定するため、解析対象のモデルを識別して色を変えるなどの描画が行いやすくなる。
また、本実施例に係る輪郭特定装置10は、算出された合計値が何れかの設定値である頂点が隣接するメッシュの辺上に位置する入隅の頂点であるか判定する。そして、輪郭特定装置10は、隣接するメッシュの辺上に位置する入隅の頂点であると判定された頂点の合計値を、3つのメッシュの頂点が重なり合って同様の入隅の状態となった頂点を示す合計値に変更する。よって、輪郭特定装置10は、頂点が隣接するメッシュの辺上に位置する入隅の頂点に対して個別に輪郭を特定する処理を行う必要がなく、3つのメッシュの頂点が重なり合った入隅の頂点と同様の処理で輪郭を特定できる。
また、本実施例に係る輪郭特定装置10は、複数のレイヤで構成された基板の解析対象のモデルを直交格子のメッシュにより離散化する。輪郭特定装置10は、離散化された基板を所定の平面で平面化した2次元データを生成する。そして、輪郭特定装置10は、2次元データ32により示される平面上の解析対象のモデルを分割した矩形のメッシュの各頂点に対して設定値情報に基づき、対応する設定値を割り当てる。よって、輪郭特定装置10は、基板を所定の平面での解析対象のモデルの輪郭の形状を特定することができる。