36    rbound.
set(HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF);
 
 
   61    BREP_SHELL_LIST::iterator ishell = 
shells.begin();
 
   66        if (cnt!=NULL) cnt->
SetMax(100);
 
   69    int shn = (int)
shells.size();
 
   70    while (ishell!=
shells.end()) {
 
   73        ishell = 
shells.erase(ishell);  
 
 
   94    BREP_SHELL_LIST::iterator ishell;
 
   95    for (ishell=
shells.begin(); ishell!=
shells.end(); ishell++) (*ishell)->CloseData();
 
 
  124        BREP_SHELL_LIST::iterator ishell;
 
  125        ishell = std::find(
shells.begin(), 
shells.end(), shell);
 
 
  140    rbound.
set(HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF);
 
 
  152            if (counter!=NULL) counter->
SetMax(100);
 
  159    BREP_FACET_LIST::iterator ifacet = 
facets.begin();
 
  162    int itv = 
Max(1, (
int)
facets.size()/100);
 
  163    while (ifacet!=
facets.end()) {
 
  165        ifacet = 
facets.erase(ifacet);
 
  171        if (counter!=NULL && cnt%itv==0) counter->
StepIt(); 
 
 
  178    BREP_FACET_LIST::iterator ifacet;
 
  179    for (ifacet=
facets.begin(); ifacet!=
facets.end(); ifacet++) (*ifacet)->CloseData();
 
 
  198        BREP_FACET_LIST::iterator ifacet;
 
  199        ifacet = std::find(
facets.begin(), 
facets.end(), facet);
 
 
  221    rbound.
set(HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF);
 
 
  242    BREP_CONTOUR_LIST::iterator icon;
 
 
  253        contour->
facet = 
this;
 
 
  262        BREP_CONTOUR_LIST::iterator icon;
 
  266        contour->
facet = NULL;
 
 
  283    double dmin =  HUGE_VALF;
 
  284    double dmax = -HUGE_VALF;
 
  286    BREP_CONTOUR_LIST::iterator icon;
 
  288        (*icon)->CloseFacet(
this, emax, dmin, dmax);
 
  291    d = (dmin + dmax)/2.0;
 
 
  319    rbound.
set(HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF, HUGE_VALF, -HUGE_VALF);
 
 
  345    if (new_wing==NULL) 
return;
 
  350        new_wing->
next = new_wing->
prev = new_wing;
 
 
  364    if (
wing==dis_wing) {
 
  365        if (dis_wing->
next==dis_wing) {
 
  377    dis_wing->
next = dis_wing->
prev = NULL;
 
 
  399    if (
wing==NULL) 
return NULL;
 
 
  422    if (first==NULL) 
return;
 
  425    for (
BREP_WING* swing=first->
prev; swing!=first; swing=prev) {
 
 
  436    if (
wing==NULL) 
return;
 
  443        if (d < dmin) dmin = d;
 
  444        if (d > dmax) dmax = d;
 
  449    } 
while (next!=
wing);
 
 
  465        next = swing->next->vertex->point;
 
 
  545        BREP_EDGE_LIST::iterator iedge = std::find(
edge_list->begin(), 
edge_list->end(), 
this);
 
  550            (*(
edge_list->begin()))->edge_list = NULL;
 
 
  604    BREP_WING_LIST::iterator iwing;
 
 
  627    BREP_WING_LIST::iterator iwing;
 
 
  668    for (
int i=0; i<8; i++) 
child[i] = NULL;
 
 
  674    for (
int i=0; i<8; i++) {
 
 
  697    if (new_vertex==NULL) 
return NULL;
 
  710        if (cmp==8) 
return p;   
 
  715    if (cmp>=0 && o!=NULL) {
 
 
  735    if (new_vertex==NULL) 
return this;
 
  752    if (cmp>=0 && o!=NULL) {
 
 
  770        if (cmp==8) 
return p;
 
  771        if (cmp<0)  
return NULL; 
 
 
  781    for (
int i=0; i<8; i++) {
 
  782        if (
child[i]!=NULL) {
 
 
  805        (wing->
vertex)->wing_list.push_back(wing);
 
 
  825        if (edge==NULL) 
return NULL;    
 
  834            BREP_EDGE_LIST::iterator iedge=edge->
edge_list->begin();
 
  836                if      ((*iedge)->wing1->vertex==vertex1) wing = (*iedge)->wing1;
 
  837                else if ((*iedge)->wing2->vertex==vertex1) wing = (*iedge)->wing2;
 
  843        if (wing!=NULL && wing->
contour!=NULL){
 
  846            if (new_edge==NULL) 
return NULL;
 
  854            wing = new_edge->
wing1;
 
 
  892    BREP_WING_LIST::iterator iwing;
 
  895    for (iwing=list.begin(); iwing!=list.end(); iwing++){
 
  901    for (iwing=list.begin(); iwing!=list.end(); iwing++) {
 
 
  926    if (vertexno!=NULL) *vertexno = num;
 
 
  939    for (
int i=0; i<8; i++) {
 
  940        if (p->
child[i]!=NULL) {
 
 
  977    if (node==NULL) 
return NULL;
 
 
  990    if (v1==v2) 
return NULL;
 
 
 1013    if (dist2<=tolerance*tolerance) 
return 8;   
 
 
 1043    tv.
n   = sqrt(tv.
x*tv.
x + tv.
y*tv.
y + tv.
z*tv.
z);
 
 
BREP_CONTOUR * CreateContour(BREP_FACET *facet)
 
TVector< double > directRS
 
void DisconnectWing(BREP_WING *wing)
 
BREP_WING * CreateWing(BREP_VERTEX *vertex1, BREP_VERTEX *vertex2)
 
TVector< double > directS
 
void ConnectWing(BREP_WING *wing)
 
TVector< double > directR
△QRS 三角Contour衝突検出用
 
void CloseFacet(BREP_FACET *facet, double &emax, double &dmin, double &dmax)
 
BREP_CONTOUR(BREP_FACET *pr_facet)
 
BREP_EDGE_LIST * edge_list
多重エッジのリストへのポインタ
 
BREP_EDGE(BREP_VERTEX *vertex1, BREP_VERTEX *vertex2)
 
bool complete
完全なエッジ.2つの Wingは共に使用されている.
 
void DisconnectContour(BREP_CONTOUR *contour)
 
double d
定数,原点から平面への距離*(-1)
 
void ConnectContour(BREP_CONTOUR *contour)
 
BREP_CONTOUR_LIST outer_contours
 
void ComputePlaneEquation()
 
BREP_FACET(BREP_SHELL *pr_shell)
 
void DisconnectFacet(BREP_FACET *facet)
 
void ConnectFacet(BREP_FACET *facet)
 
BREP_SHELL(BREP_SOLID *pr_solid)
 
unsigned int vertexno
頂点の数
 
BREP_CONTOUR_LIST contours
Contours リスト
 
void ConnectShell(BREP_SHELL *shell)
 
CVCounter * counter
仮想計量カウンタ
 
void DisconnectShell(BREP_SHELL *shell)
 
BREP_WING_LIST wings
Wings リスト
 
BREP_WING_LIST shortage_wings
不足 Wings リスト
 
unsigned int vertexid
頂点のカウンタ.Vertex のIDを決める際に使用
 
BREP_CONTOUR_LIST surplus_contours
過剰 Contours リスト
 
bool calc_normal
normal を計算するか? しない場合は入力値を使用する.
 
long int index
シーケンシャルに増加する一意的な番号.Octree に格納されるときに設定される.
 
Vector< double > point
頂点の座標.
 
void DisconnectWing(BREP_WING *wing)
 
Vector< double > normal
法線ベクトル.周りの Contour の法線ベクトルの平均.
 
ArrayParam< int > weight
頂点の重み.要正規化.
 
BREP_VERTEX_LIST * forbidden_list
お互いに Edgeを張ることを禁止された Vertexの List
 
BREP_WING(BREP_VERTEX *v)
 
BREP_VERTEX * vertex
Start of Vertex.
 
virtual void StepIt(int n=1)
カウンタのメモリを増やす
 
virtual void SetMax(int m)
カウンタの最大値(最終目標)を設定
 
virtual void DeleteChildCounter()
子カウンタの削除(有効領域の無効化)
 
virtual CVCounter * GetUsableCounter()
現在使用可能な目盛りの有効領域を確保
 
virtual CVCounter * MakeChildCounter(int n)
子カウンタの作成(有効領域を再定義)
 
OctreeNode * FindSubtree(BREP_VERTEX *element)
Vertex element と同じ位置にある Vertexを含むノードを返す.
 
void ComputeVerticesNormal(void)
 
OctreeNode * AddWithDuplicates(BREP_VERTEX *new_vertex)
 
OctreeNode * AddWithUnique(BREP_VERTEX *new_vertex)
 
BREP_VERTEX * vertex
ルートノードの場合は NULL
 
OctreeNode(BREP_VERTEX *new_vertex, BREP_SOLID *sld)
OctreeNodeのコンストラクタは,BREP_VERTEXに対して,新たに領域を作らずにポインタをコピーすることに注意!!
 
void set(T XMin=(T) 0, T XMax=(T) 0, T YMin=(T) 0, T YMax=(T) 0, T ZMin=(T) 0, T ZMax=(T) 0, T TMin=(T) 0, T TMax=(T) 0)
 
void fusion(RBound< T > bound)
境界構造体 bound と融合させる
 
Vector< T > normalize(void)
 
DllExport BREP_WING * GetWingOtherSide(BREP_WING *wing)
 
DllExport BREP_EDGE * FindEdge(BREP_VERTEX *vertex1, BREP_VERTEX *vertex2)
 
DllExport void ConnectWingToVertex(BREP_WING *wing)
 
std::list< BREP_WING * > BREP_WING_LIST
 
std::list< BREP_EDGE * > BREP_EDGE_LIST
 
DllExport TVector< double > Vertex2TVector(BREP_VERTEX *v)
 
DllExport BREP_EDGE * CreateEdge(BREP_VERTEX *v1, BREP_VERTEX *v2)
 
class DllExport OctreeNode
 
class DllExport BREP_CONTOUR
 
DllExport BREP_VERTEX ** GetOctreeVertices(OctreeNode *octree, long int *vertexno)
 
DllExport void DestroyWing(BREP_WING *wing)
 
double Abs_Vertex_Tolerance
 
class DllExport BREP_WING
 
DllExport long int OctreeGetter(OctreeNode *p, BREP_VERTEX **vtx, long int counter)
 
class DllExport BREP_EDGE
 
DllExport BREP_WING * CreateWingWithoutContour(BREP_VERTEX *vertex1, BREP_VERTEX *vertex2)
 
DllExport BREP_VERTEX * AddVertex2Octree(BREP_VERTEX *vertex, OctreeNode *octree, bool dupli=false)
 
DllExport int CompareVertex(BREP_VERTEX *v1, BREP_VERTEX *v2)