1 // File: HLRAlgo_PolyShellData.cxx
2 // Created: Fri May 5 15:58:19 1995
3 // Author: Christophe MARION
4 // Copyright: OPEN CASCADE 2000
9 #include <HLRAlgo_PolyShellData.ixx>
10 #include <HLRAlgo_ListIteratorOfListOfBPoint.hxx>
11 #include <HLRAlgo_BiPoint.hxx>
12 #include <HLRAlgo_PolyData.hxx>
14 #define PntX1 ((Standard_Real*)Coordinates)[ 0]
15 #define PntY1 ((Standard_Real*)Coordinates)[ 1]
16 #define PntZ1 ((Standard_Real*)Coordinates)[ 2]
17 #define PntX2 ((Standard_Real*)Coordinates)[ 3]
18 #define PntY2 ((Standard_Real*)Coordinates)[ 4]
19 #define PntZ2 ((Standard_Real*)Coordinates)[ 5]
20 #define PntXP1 ((Standard_Real*)Coordinates)[ 6]
21 #define PntYP1 ((Standard_Real*)Coordinates)[ 7]
22 #define PntZP1 ((Standard_Real*)Coordinates)[ 8]
23 #define PntXP2 ((Standard_Real*)Coordinates)[ 9]
24 #define PntYP2 ((Standard_Real*)Coordinates)[10]
25 #define PntZP2 ((Standard_Real*)Coordinates)[11]
27 #define TotXMin ((Standard_Real*)TotMinMax)[0]
28 #define TotYMin ((Standard_Real*)TotMinMax)[1]
29 #define TotZMin ((Standard_Real*)TotMinMax)[2]
30 #define TotXMax ((Standard_Real*)TotMinMax)[3]
31 #define TotYMax ((Standard_Real*)TotMinMax)[4]
32 #define TotZMax ((Standard_Real*)TotMinMax)[5]
34 //=======================================================================
35 //function : HLRAlgo_PolyShellData
37 //=======================================================================
39 HLRAlgo_PolyShellData::
40 HLRAlgo_PolyShellData (const Standard_Integer nbFace)
44 //=======================================================================
45 //function : UpdateGlobalMinMax
47 //=======================================================================
50 HLRAlgo_PolyShellData::
51 UpdateGlobalMinMax(const Standard_Address TotMinMax)
53 HLRAlgo_ListIteratorOfListOfBPoint it;
55 for (it.Initialize(mySegList); it.More(); it.Next()) {
56 HLRAlgo_BiPoint& BP = it.Value();
57 const Standard_Address Coordinates = BP.Coordinates();
58 if (PntXP1 < PntXP2) {
59 if (TotXMin > PntXP1) TotXMin = PntXP1;
60 else if (TotXMax < PntXP2) TotXMax = PntXP2;
63 if (TotXMin > PntXP2) TotXMin = PntXP2;
64 else if (TotXMax < PntXP1) TotXMax = PntXP1;
66 if (PntYP1 < PntYP2) {
67 if (TotYMin > PntYP1) TotYMin = PntYP1;
68 else if (TotYMax < PntYP2) TotYMax = PntYP2;
71 if (TotYMin > PntYP2) TotYMin = PntYP2;
72 else if (TotYMax < PntYP1) TotYMax = PntYP1;
74 if (PntZP1 < PntZP2) {
75 if (TotZMin > PntZP1) TotZMin = PntZP1;
76 else if (TotZMax < PntZP2) TotZMax = PntZP2;
79 if (TotZMin > PntZP2) TotZMin = PntZP2;
80 else if (TotZMax < PntZP1) TotZMax = PntZP1;
83 Standard_Integer nbFace = myPolyg.Upper();
84 Handle(HLRAlgo_PolyData)* pd;
85 if(nbFace > 0) pd = (Handle(HLRAlgo_PolyData)*)&(myPolyg.ChangeValue(1));
87 for (Standard_Integer i = 1; i <= nbFace; i++) {
88 (*pd)->UpdateGlobalMinMax(TotMinMax);
93 //=======================================================================
94 //function : UpdateHiding
96 //=======================================================================
98 void HLRAlgo_PolyShellData::
99 UpdateHiding (const Standard_Integer nbHiding)
102 myHPolHi = new TColStd_HArray1OfTransient(1,nbHiding);
103 else myHPolHi.Nullify();