|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--jp.go.ipa.jgcl.JgclEmbeddedGraph
(2次元の) 埋め込みグラフを表すクラス。
このクラスは、グラフに関する Euler の公式 (|V| - |E| + |F| = 2) を 満たすグラフを表現する。 ここで、V は頂点、E は辺、F は面を意味し、|X| は X の個数を意味する。
このクラスのインスタンスは Euler の公式を保存しながら グラフを操作する Euler Operator を備える。
グラフに含まれる頂点/辺/面は、このクラスの内部クラスとして表現されている。
それら頂点/辺/面を表現する内部クラスは、 互いの接続関係を保持するのみであり、 頂点の座標値等の幾何情報は直接には保持しない。 ただし、 各頂点/辺/面には、 任意のオブジェクト (java.lang.Object) を関連付けることができる。
なお、
このクラスのインスタンスは、
グラフ内での新たな頂点/辺/面の生成を担当するオブジェクト
graphItemMaker (JgclEmbeddedGraph.GraphItemMaker
)
を保持する。
グラフを操作する Euler Operation の際には、
利用者が対象となる頂点/辺/面を直接生成するのではなく、
それぞれの Euler Operator が自身の内部で
この graphItemMaker の当該機能を呼び出して
頂点/辺/面を生成する。
内部クラスの概要 | |
class |
JgclEmbeddedGraph.Edge
グラフの半辺 (辺の片割れ) を表す内部クラス。 |
class |
JgclEmbeddedGraph.Face
グラフの面を表す内部クラス。 |
protected class |
JgclEmbeddedGraph.GraphItem
グラフの構成物を表す内部クラス。 |
static interface |
JgclEmbeddedGraph.GraphItemMaker
グラフ内での新たな頂点/辺/面の生成を担当するオブジェクトが実装すべきインターフェイス。 |
class |
JgclEmbeddedGraph.Result
JgclEmbeddedGraph が備える Euler Operator の各 make メソッドにおいて 新たに生成された頂点/辺/面を示す内部クラス。 |
class |
JgclEmbeddedGraph.Vertex
グラフの頂点を表す内部クラス。 |
コンストラクタの概要 | |
JgclEmbeddedGraph()
何も与えずに、空の埋め込みグラフとしてオブジェクトを構築する。 |
|
JgclEmbeddedGraph(JgclEmbeddedGraph.GraphItemMaker maker)
graphItemMaker を与えて、空の埋め込みグラフとしてオブジェクトを構築する。 |
クラス java.lang.Object から継承したメソッド |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public JgclEmbeddedGraph()
このコンストラクタでは、
構築するインスタンスの graphItemMaker として、単に
JgclEmbeddedGraph.Vertex
/
JgclEmbeddedGraph.Face
/
JgclEmbeddedGraph.Edge
のインスタンスを生成するオブジェクトを設定する。
public JgclEmbeddedGraph(JgclEmbeddedGraph.GraphItemMaker maker)
maker
- 新たな頂点/辺/面の生成を担当するオブジェクトメソッドの詳細 |
protected void setGraphItemMaker(JgclEmbeddedGraph.GraphItemMaker maker)
新たな頂点/辺/面の生成を担当するオブジェクト
- public int getNumberOfVertices()
public int getNumberOfEdges()
public int getNumberOfFaces()
public java.util.Enumeration vertexElements()
public java.util.Enumeration edgeElements()
public java.util.Enumeration faceElements()
public boolean contains(JgclEmbeddedGraph.Vertex vrtx)
vrtx
- 検査する頂点vrtx
- がグラフに含まれていれば true、そうでなければ falsepublic boolean contains(JgclEmbeddedGraph.Face face)
face
- 検査する面face
- がグラフに含まれていれば true、そうでなければ falsepublic boolean contains(JgclEmbeddedGraph.Edge edge)
edge
- 検査する辺edge
- がグラフに含まれていれば true、そうでなければ falsepublic JgclEmbeddedGraph.Result makeVertexFace()
このグラフが空でない場合には、 JgclFatal の例外を発生する。
JgclFatal
,
killVertexFace()
public void killVertexFace()
このグラフが頂点を一つと面を一つだけ持つものでない場合には、 JgclFatal の例外を発生する。
JgclFatal
,
makeVertexFace()
public JgclEmbeddedGraph.Result makeEdgeVertex(JgclEmbeddedGraph.Face face, JgclEmbeddedGraph.Vertex vrtx)
頂点から新たな辺を伸ばす。
face あるいは vrtx が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
vrtx が face の頂点サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
face
- その内部に新たな辺を伸ばす面vrtx
- 新たな辺の始点となる頂点JgclInvalidArgumentValue
,
killEdgeVertex(JgclEmbeddedGraph.Edge)
public void killEdgeVertex(JgclEmbeddedGraph.Edge edge)
ぶら下がった辺を削除する。
edge が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
edge がぶら下がった辺でない場合には JgclInvalidArgumentValue の例外を発生する。 なお、いくつかの辺が繋がってぶら下がっているような状況においては、 その最先端以外の辺は「ぶら下がっている」とはみなさない。
edge
- 削除する辺JgclInvalidArgumentValue
,
makeEdgeVertex(JgclEmbeddedGraph.Face, JgclEmbeddedGraph.Vertex)
public JgclEmbeddedGraph.Result makeVertexEdge(JgclEmbeddedGraph.Edge edge)
辺を二つに分割する。
edge が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
edge
- 分割する辺JgclInvalidArgumentValue
,
killVertexEdge(JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Edge)
public void killVertexEdge(JgclEmbeddedGraph.Vertex vrtx, JgclEmbeddedGraph.Edge edge)
二つの辺を結ぶ頂点を削除する。
vrtx あるいは edge が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
edge が vrtx に繋がっていない場合には JgclInvalidArgumentValue の例外を発生する。
vrtx に繋がっている辺の数が 2 以外の場合には JgclInvalidArgumentValue の例外を発生する。
vrtx
- 削除する頂点edge
- 削除する辺JgclInvalidArgumentValue
,
makeVertexEdge(JgclEmbeddedGraph.Edge)
public JgclEmbeddedGraph.Result makeEdgeFace(JgclEmbeddedGraph.Face face, JgclEmbeddedGraph.Vertex headVrtx, JgclEmbeddedGraph.Vertex tailVrtx)
面を二つに分割する。
指定した face は常に新たに生成される辺の左面として残る。
このメソッドは、その内部にぶら下がった辺を持たない面を分割する場合を想定している。
ぶら下がった辺を持たない面を、そのぶら下がった辺の根本の頂点で分割する場合には、
makeEdgeFace(Face, Vertex, Vertex, Edge, Edge)
を利用しなければならない。
face あるいは headVrtx, tailVrtx が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
headVrtx, tailVrtx が face の頂点サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
headVrtx と tailVrtx が同一の頂点である場合には JgclInvalidArgumentValue の例外を発生する。
face
- 分割する面headVrtx
- 新たに生成される辺の始点となる頂点tailVrtx
- 新たに生成される辺の終点となる頂点JgclInvalidArgumentValue
,
killEdgeFace(JgclEmbeddedGraph.Edge, JgclEmbeddedGraph.Face)
public JgclEmbeddedGraph.Result makeEdgeFace(JgclEmbeddedGraph.Face face, JgclEmbeddedGraph.Vertex headVrtx, JgclEmbeddedGraph.Vertex tailVrtx, JgclEmbeddedGraph.Edge headEdge, JgclEmbeddedGraph.Edge tailEdge)
面を二つに分割する。
指定した face は常に新たに生成される辺の左面として残る。
このメソッドは、その内部にぶら下がった辺を持つような面を
そのぶら下がった辺の根本の頂点で分割するような場合を想定している。
ぶら下がった辺を持たない面を分割する場合には、
わざわざ辺を指定する必要の無いメソッド
makeEdgeFace(Face, Vertex, Vertex)
を利用する方が簡単である。
与えられた面/頂点/辺のいずれかが、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
headVrtx, tailVrtx が face の頂点サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
headVrtx と tailVrtx が同一の頂点である場合には JgclInvalidArgumentValue の例外を発生する。
headVrtx が headEdge の端点でない場合には JgclInvalidArgumentValue の例外を発生する。
tailVrtx が tailEdge の端点でない場合には JgclInvalidArgumentValue の例外を発生する。
face
- 分割する面headVrtx
- 新たに生成される辺の始点となる頂点tailVrtx
- 新たに生成される辺の終点となる頂点headEdge
- 新たに生成される辺の右面の次になる辺tailEdge
- 新たに生成される辺の左面の次になる辺JgclInvalidArgumentValue
,
killEdgeFace(JgclEmbeddedGraph.Edge, JgclEmbeddedGraph.Face)
public void killEdgeFace(JgclEmbeddedGraph.Edge edge, JgclEmbeddedGraph.Face face)
二つの面を分けている辺を削除する。
edge あるいは face が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
edge が face の辺サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。
edge がぶら下がった辺である場合には JgclInvalidArgumentValue の例外を発生する。 なお、いくつかの辺が繋がってぶら下がっているような状況においては、 そのすべての辺を「ぶら下がっている」とみなす。
edge
- 削除する辺face
- 削除する面JgclInvalidArgumentValue
,
makeEdgeFace(JgclEmbeddedGraph.Face, JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Vertex)
,
makeEdgeFace(JgclEmbeddedGraph.Face, JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Edge, JgclEmbeddedGraph.Edge)
protected java.lang.Object clone()
java.lang.Object
内の clone
copy()
,
copy(JgclEmbeddedGraph)
public JgclEmbeddedGraph copy()
このメソッドの処理は以下の通り。
return copy(new JgclEmbeddedGraph());
clone()
,
copy(JgclEmbeddedGraph)
,
JgclEmbeddedGraph()
public JgclEmbeddedGraph copy(JgclEmbeddedGraph seed)
seed には、構築したばかりの空のグラフを与える。
seed
- 複製された位相情報を保持するためのグラフclone()
,
copy()
public JgclEmbeddedGraph dualCopy()
このメソッドの処理は以下の通り。
return dualCopy(new JgclEmbeddedGraph());
dualCopy(JgclEmbeddedGraph)
,
JgclEmbeddedGraph()
public JgclEmbeddedGraph dualCopy(JgclEmbeddedGraph seed)
seed には、構築したばかりの空のグラフを与える。
seed
- 双対複製された位相情報を保持するためのグラフdualCopy()
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |