ATLAS Offline Software
Loading...
Searching...
No Matches
SbPolyhedronPolygonXSect::Internals Class Reference
Collaboration diagram for SbPolyhedronPolygonXSect::Internals:

Public Types

typedef std::pair< int, int > Edge
typedef PolygonTriangulator::Triangle Triangle
typedef PolygonTriangulator::Triangles Triangles

Public Member Functions

 Internals (SbPolyhedronPolygonXSect *sbp)
 ~Internals ()
void setData (const std::vector< double > *xx, const std::vector< double > *yy, const double &dz)
void triangulate ()
void initEdgeClassificationsAndNeighbours ()
void addExtraVertices ()
void allocateMemoryAndDefineVertexCoordinates ()
void defineFacesTopology ()
bool isinternaledge (const Edge &edge, const std::map< Edge, std::vector< Triangles::const_iterator > > &edge2triangles_map) const
Edge GetEdge (const Triangle *tr, const unsigned &i, const bool &oriented=false) const
void setupface (const unsigned &face_id, const std::vector< unsigned > &v) const
void setupExternalFace (const unsigned &id_extedge, const unsigned &prev_edgeface, const unsigned &next_edgeface, const unsigned &idfirstvertex, const unsigned &idsecondvertex, const unsigned &id_triangleface, const unsigned &n, std::vector< unsigned > &faceinfo) const
void getSurroundingValues (const std::vector< unsigned > &numbercycle, const unsigned &centralValue, unsigned &prevValue, unsigned &nextValue) const
unsigned top2bottomvertexid (const unsigned &topid) const
unsigned top2bottomfaceid (const unsigned &topid) const

Public Attributes

double dz
const std::vector< double > * x
const std::vector< double > * y
unsigned n
unsigned ntriangles
SbPolyhedronPolygonXSectsbpolyhedron
PolygonTriangulatorpoly
std::set< Edgeedges_internal
std::set< Edgeedges_external
std::map< Edge, const Triangle * > neighbourmap
std::set< Edgeedges_with_extra_vertex
unsigned nextraexternalvertices
unsigned nextrainternalvertices
std::map< Edge, unsigned > edgewithextravertex_2_id
std::map< Edge, unsigned > externaledgewithextravertex_2_2ndedgeid

Detailed Description

Definition at line 1906 of file SbPolyhedron.cxx.

Member Typedef Documentation

◆ Edge

typedef std::pair<int,int> SbPolyhedronPolygonXSect::Internals::Edge

Definition at line 1909 of file SbPolyhedron.cxx.

◆ Triangle

◆ Triangles

Constructor & Destructor Documentation

◆ Internals()

SbPolyhedronPolygonXSect::Internals::Internals ( SbPolyhedronPolygonXSect * sbp)
inline

◆ ~Internals()

SbPolyhedronPolygonXSect::Internals::~Internals ( )
inline

Definition at line 1917 of file SbPolyhedron.cxx.

1917{ delete poly; }

Member Function Documentation

◆ addExtraVertices()

void SbPolyhedronPolygonXSect::Internals::addExtraVertices ( )

Definition at line 2051 of file SbPolyhedron.cxx.

2051 {
2052
2062
2063 std::set<const Triangle*> triangles_with_extra_vertex;//Eventually, all triangles should end up here.
2064
2066 Triangles::const_iterator itt=poly->triangles()->begin();
2067 Triangles::const_iterator ittE=poly->triangles()->end();
2068 for(; itt!=ittE; ++itt) {
2069 unsigned ninternaledges(0);
2070 for (unsigned iedge=0;iedge<3;++iedge) {
2071 Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2072 if (edges_internal.find(eun)!=edges_internal.end())
2073 ++ninternaledges;
2074 }
2075 if (ninternaledges<3)
2076 continue;
2077
2078
2079 //Check the three edges to find a neighbour that has not already become a quadrilateral.
2080 unsigned iedge(0);
2081 for (;iedge<3;++iedge) {
2082 Edge e = GetEdge(&(*itt),iedge,true/*oriented!*/);
2083 const Triangle* trneighbour = neighbourmap[e];
2084 assert(trneighbour);//fixme
2085 if (triangles_with_extra_vertex.insert(trneighbour).second) {
2086 triangles_with_extra_vertex.insert(&(*itt));
2087 Edge eun = GetEdge(&(*itt),iedge,false/*unoriented*/);
2088 edges_with_extra_vertex.insert(eun);
2090 break;
2091 }
2092 }
2093 assert(iedge<3);//If we cannot add a vertex to a triangle with 3 internal edges, then we have a problem...
2094 }
2095
2097 itt=poly->triangles()->begin();
2098 for(; itt!=ittE; ++itt) {
2099 Triangle* triangle = const_cast<Triangle*>( &(*itt) );
2100 if (triangles_with_extra_vertex.find(triangle)!=triangles_with_extra_vertex.end())
2101 continue;
2102 for (unsigned iedge=0;iedge<3;++iedge) {
2103 Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2104 //only look at external edges
2105 if (edges_external.find(eun)==edges_external.end())
2106 continue;
2107 assert(edges_with_extra_vertex.find(eun)==edges_with_extra_vertex.end());//fixme
2108 triangles_with_extra_vertex.insert(triangle);
2109 edges_with_extra_vertex.insert(eun);
2111 break;
2112 }
2113 }
2114 assert(ntriangles==triangles_with_extra_vertex.size());
2115}
PolygonTriangulator::Triangle Triangle
Edge GetEdge(const Triangle *tr, const unsigned &i, const bool &oriented=false) const
std::map< Edge, const Triangle * > neighbourmap

◆ allocateMemoryAndDefineVertexCoordinates()

void SbPolyhedronPolygonXSect::Internals::allocateMemoryAndDefineVertexCoordinates ( )

Definition at line 2118 of file SbPolyhedron.cxx.

2118 {
2119
2120 const unsigned nfaces = 2*ntriangles+n+nextraexternalvertices;
2121 const unsigned nvertices = 2*(n+nextraexternalvertices+nextrainternalvertices);
2122 sbpolyhedron->AllocateMemory(nvertices,nfaces);
2123
2125
2126 //Make edgewithextravertex_2_id map.
2127 std::set<Edge>::const_iterator itl = edges_with_extra_vertex.begin();
2128 std::set<Edge>::const_iterator itlE = edges_with_extra_vertex.end();
2129 unsigned il = 2*n;
2130 unsigned ielev = 3*n-4;
2131 for (;itl!=itlE;++itl) {
2133 if (edges_external.find(*itl)!=edges_external.end()) {
2135 }
2136 }
2137 //Now place the vertices:
2138
2139 //First the original n vertices at +dz
2140 for (unsigned i = 0; i<n; ++i)
2141 sbpolyhedron->m_pV[i+1] = HVPoint3D(x->at(i),y->at(i),dz);
2142 //Then the original n vertices at -dz
2143 for (unsigned i = 0; i<n; ++i)
2144 sbpolyhedron->m_pV[i+1+n] = HVPoint3D(x->at(i),y->at(i),-dz);
2145 //Extra vertices at +dz.
2146 std::map<Edge,unsigned>::const_iterator itlid = edgewithextravertex_2_id.begin();
2147 std::map<Edge,unsigned>::const_iterator itlidE = edgewithextravertex_2_id.end();
2148 for (; itlid!=itlidE; ++itlid) {
2149 double xx = 0.5*(x->at(itlid->first.first-1)+x->at(itlid->first.second-1));
2150 double yy = 0.5*(y->at(itlid->first.first-1)+y->at(itlid->first.second-1));
2151 sbpolyhedron->m_pV[itlid->second] = HVPoint3D(xx,yy,dz);
2152 }
2153 //Extra vertices at -dz.
2154 itlid = edgewithextravertex_2_id.begin();
2155 for (; itlid!=itlidE; ++itlid) {
2156 double xx = 0.5*(x->at(itlid->first.first-1)+x->at(itlid->first.second-1));
2157 double yy = 0.5*(y->at(itlid->first.first-1)+y->at(itlid->first.second-1));
2158 sbpolyhedron->m_pV[itlid->second+edgewithextravertex_2_id.size()] = HVPoint3D(xx,yy,-dz);
2159 }
2160
2161}
std::map< Edge, unsigned > externaledgewithextravertex_2_2ndedgeid
std::map< Edge, unsigned > edgewithextravertex_2_id

◆ defineFacesTopology()

void SbPolyhedronPolygonXSect::Internals::defineFacesTopology ( )

Definition at line 2243 of file SbPolyhedron.cxx.

2243 {
2244 //This is definitely the most tricky part to get right...
2245
2246 //Make triangle_2_id map.
2247 std::map<const Triangle*,unsigned> triangle_2_id;
2248 Triangles::const_iterator itt=poly->triangles()->begin();
2249 Triangles::const_iterator ittE=poly->triangles()->end();
2250 unsigned itri = 0;
2251 for(; itt!=ittE; ++itt) {
2252 Triangle* triangle = const_cast<Triangle*>( &(*itt) );
2253 triangle_2_id[triangle]=++itri;
2254 }
2255 assert(triangle_2_id.size()==ntriangles);
2256
2257 //Loop over the external edges, and get a list of edge face id's.
2258 std::vector<unsigned> edgeface_ids;
2259 std::map<Edge,unsigned> edge_2_firstid;
2260 std::map<Edge,unsigned> edge_2_secondid;
2261 for (unsigned i = 1; i<=n;++i) {
2262 Edge eun((i==n?1:i),(i==n?n:i+1));
2263 edgeface_ids.push_back(2*n-4+i);
2264 edge_2_firstid[eun]=edgeface_ids.back();
2265 bool hasextravertex=
2267 if (hasextravertex) {
2268 edgeface_ids.push_back(externaledgewithextravertex_2_2ndedgeid[eun]);
2269 edge_2_secondid[eun]=edgeface_ids.back();
2270 }
2271 }
2272
2273 std::vector<unsigned> faceinfo_top, faceinfo_bottom(8), faceinfo_sides;
2274 itt = poly->triangles()->begin();
2275 for(; itt!=ittE; ++itt) {
2276 unsigned triangleid = triangle_2_id[&(*itt)];
2277
2279 for (unsigned iedge=0;iedge<3;++iedge) {
2280 Edge e = GetEdge(&(*itt),iedge,true/*oriented!*/);
2281 Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2282
2283 bool hasextravertex(edges_with_extra_vertex.find(eun)!=edges_with_extra_vertex.end());
2284 bool isinternal(edges_external.find(eun)==edges_external.end());
2285 //add for the triangle.
2286 faceinfo_top.push_back(e.first);
2287 if (isinternal) {
2288 assert(neighbourmap[e]);//fixme
2289 assert(triangle_2_id.find(neighbourmap[e])!=triangle_2_id.end());
2290 faceinfo_top.push_back(triangle_2_id[neighbourmap[e]]);
2291 if (hasextravertex) {
2292 faceinfo_top.push_back(edgewithextravertex_2_id[eun]);
2293 faceinfo_top.push_back(triangle_2_id[neighbourmap[e]]);//NB: Same neighbourface again!
2294 // assert(false&&"need to implement extravertex for internal edges");
2295 //fixme!
2296 }
2297 } else {
2298 assert(edge_2_firstid.find(eun)!=edge_2_firstid.end());
2299 unsigned firstsideid = edge_2_firstid[eun];
2300 faceinfo_top.push_back(firstsideid);
2301 if (hasextravertex) {
2302 faceinfo_top.push_back(edgewithextravertex_2_id[eun]);
2303 assert(edge_2_secondid.find(eun)!=edge_2_secondid.end());
2304 faceinfo_top.push_back(edge_2_secondid[eun]);
2305 }
2307 unsigned prev_edgeface,next_edgeface;
2308 getSurroundingValues(edgeface_ids, firstsideid,prev_edgeface, next_edgeface);
2309 unsigned firstvertexid = e.first;
2310 unsigned secondvertexid = (hasextravertex? edgewithextravertex_2_id[eun] : e.second);
2311 setupExternalFace(firstsideid,prev_edgeface, next_edgeface,firstvertexid,secondvertexid,
2312 /*firstvertexid+n,secondvertexid + (hasextravertex?externaledgewithextravertex_2_2ndedgeid.size():n),*/
2313 triangleid,n,faceinfo_sides);
2314 if (hasextravertex) {
2315 firstsideid=next_edgeface;
2316 getSurroundingValues(edgeface_ids, firstsideid,prev_edgeface, next_edgeface);
2317 firstvertexid=secondvertexid;
2318 secondvertexid=e.second;
2319 setupExternalFace(firstsideid,prev_edgeface, next_edgeface,
2320 edgewithextravertex_2_id[eun],secondvertexid,
2321 /*edgewithextravertex_2_id[eun]+externaledgewithextravertex_2_2ndedgeid.size(),secondvertexid+n,*/
2322 triangleid,n,faceinfo_sides);
2323 }
2324
2325 }
2326 }//End edge loop
2327
2329 assert(faceinfo_bottom.size()==8);//fixme
2330 assert(faceinfo_top.size()==8);//fixme
2331 faceinfo_bottom[0]=top2bottomvertexid(faceinfo_top[0]);
2332 faceinfo_bottom[1]=top2bottomfaceid(faceinfo_top[7]);
2333 faceinfo_bottom[2]=top2bottomvertexid(faceinfo_top[6]);
2334 faceinfo_bottom[3]=top2bottomfaceid(faceinfo_top[5]);
2335 faceinfo_bottom[4]=top2bottomvertexid(faceinfo_top[4]);
2336 faceinfo_bottom[5]=top2bottomfaceid(faceinfo_top[3]);
2337 faceinfo_bottom[6]=top2bottomvertexid(faceinfo_top[2]);
2338 faceinfo_bottom[7]=top2bottomfaceid(faceinfo_top[1]);
2339
2340 //Actually setup triangle faces.
2341 setupface(triangleid,faceinfo_top);
2342 setupface(triangleid+ntriangles,faceinfo_bottom);
2343 faceinfo_top.clear();
2344 }//End triangle loop
2345
2346}
void setupExternalFace(const unsigned &id_extedge, const unsigned &prev_edgeface, const unsigned &next_edgeface, const unsigned &idfirstvertex, const unsigned &idsecondvertex, const unsigned &id_triangleface, const unsigned &n, std::vector< unsigned > &faceinfo) const
void getSurroundingValues(const std::vector< unsigned > &numbercycle, const unsigned &centralValue, unsigned &prevValue, unsigned &nextValue) const
void setupface(const unsigned &face_id, const std::vector< unsigned > &v) const
unsigned top2bottomfaceid(const unsigned &topid) const
unsigned top2bottomvertexid(const unsigned &topid) const

◆ GetEdge()

SbPolyhedronPolygonXSect::Internals::Edge SbPolyhedronPolygonXSect::Internals::GetEdge ( const Triangle * tr,
const unsigned & i,
const bool & oriented = false ) const

Definition at line 2178 of file SbPolyhedron.cxx.

2178 {
2179 assert(i<=2);
2180 if (i==2)
2181 return oriented ? Edge((*tr)[2],(*tr)[0]) : Edge((*tr)[0],(*tr)[2]);
2182 else
2183 return Edge((*tr)[i],(*tr)[i+1]);
2184}

◆ getSurroundingValues()

void SbPolyhedronPolygonXSect::Internals::getSurroundingValues ( const std::vector< unsigned > & numbercycle,
const unsigned & centralValue,
unsigned & prevValue,
unsigned & nextValue ) const

Definition at line 2211 of file SbPolyhedron.cxx.

2213{
2214 //First, find the index of the centralValue
2215 unsigned int i;
2216 for ( i=0/*fixme, not O(n)*/;i<numbercycle.size();++i)
2217 if (numbercycle.at(i)==centralValue)
2218 break;
2219 //Sanity check that the central value was found
2220 assert(i<numbercycle.size());//fixme
2221 prevValue = ( i==0 ? numbercycle.back() : numbercycle.at(i-1) );
2222 nextValue = ( i==numbercycle.size()-1 ? numbercycle.front() : numbercycle.at(i+1) );
2223
2224}

◆ initEdgeClassificationsAndNeighbours()

void SbPolyhedronPolygonXSect::Internals::initEdgeClassificationsAndNeighbours ( )

Definition at line 2000 of file SbPolyhedron.cxx.

2000 {
2001 //Goal: classify edges as external/internal, get ability to find neighbours.
2002
2003 //As a help, we create a map of edges->triangles. We define an edge
2004 //as a pair of int's, where the first should always be lower than
2005 //the second (otherwise the edges 2-4 and 4-2 would seem different):
2006 std::map<Edge,std::vector<PolygonTriangulator::Triangles::const_iterator> > edge2triangles_map;
2007 std::set<Edge> alledges;
2008 Triangles::const_iterator itt=poly->triangles()->begin();
2009 Triangles::const_iterator ittE=poly->triangles()->end();
2010 for(; itt!=ittE; ++itt)
2011 for (unsigned iedge=0;iedge<3;++iedge) {
2012 Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2013 if (edge2triangles_map.find(eun)==edge2triangles_map.end()) {
2014 alledges.insert(eun);
2015 }
2016 edge2triangles_map[eun].push_back(itt);
2017 }
2018
2019
2020 //set of external/internal edges:
2021 std::set<Edge>::const_iterator itedges = alledges.begin();
2022 std::set<Edge>::const_iterator itedgesE = alledges.end();
2023 for (;itedges!=itedgesE;++itedges) {
2024 if (isinternaledge((*itedges),edge2triangles_map))
2025 edges_internal.insert(*itedges);
2026 else
2027 edges_external.insert(*itedges);
2028 }
2029
2030 //Neighbourmap:
2031 itt=poly->triangles()->begin();
2032 for(; itt!=ittE; ++itt)
2033 for (unsigned iedge=0;iedge<3;++iedge) {
2034 Edge e = GetEdge(&(*itt),iedge,true/*oriented!*/);
2035 Edge eun = GetEdge(&(*itt),iedge,false/*unoriented!*/);
2036 assert(edge2triangles_map.find(eun)!=edge2triangles_map.end());//fixme
2037 if (edges_external.find(eun)!=edges_external.end()) {
2038 neighbourmap[e]=0;
2039 neighbourmap[eun]=0;
2040 } else {
2041 assert(edge2triangles_map[eun].size()==2);//fixme
2042 const Triangle* triangle = static_cast<const Triangle*>( &(*itt) );
2043 const Triangle* triangle1 = static_cast<const Triangle*>( &(*(edge2triangles_map[eun].front())) );
2044 const Triangle* triangle2 = static_cast<const Triangle*>( &(*(edge2triangles_map[eun].back())) );
2045 neighbourmap[e]=(triangle==triangle1?triangle2:triangle1);
2046 }
2047 }
2048}
bool isinternaledge(const Edge &edge, const std::map< Edge, std::vector< Triangles::const_iterator > > &edge2triangles_map) const

◆ isinternaledge()

bool SbPolyhedronPolygonXSect::Internals::isinternaledge ( const Edge & edge,
const std::map< Edge, std::vector< Triangles::const_iterator > > & edge2triangles_map ) const

Definition at line 2164 of file SbPolyhedron.cxx.

2165 {
2166
2167 Edge reverse_edge(edge.second,edge.first);
2168 unsigned k = 0;
2169 std::map<Edge,std::vector<Triangles::const_iterator> >::const_iterator it = edge2triangles_map.find(edge);
2170 if (it!=edge2triangles_map.end()) k += it->second.size();
2171 it = edge2triangles_map.find(reverse_edge);
2172 if (it!=edge2triangles_map.end()) k += it->second.size();
2173 return k==2;
2174
2175}

◆ setData()

void SbPolyhedronPolygonXSect::Internals::setData ( const std::vector< double > * xx,
const std::vector< double > * yy,
const double & dz )

Definition at line 1982 of file SbPolyhedron.cxx.

1983{
1984 n = xx->size();
1985 ntriangles = n-2;
1986 assert (n==yy->size()&&n>2);//fixme n>2, and special code for n==3.
1987 dz = the_dz;
1988 x = xx;
1989 y = yy;
1991}

◆ setupExternalFace()

void SbPolyhedronPolygonXSect::Internals::setupExternalFace ( const unsigned & id_extedge,
const unsigned & prev_edgeface,
const unsigned & next_edgeface,
const unsigned & idfirstvertex,
const unsigned & idsecondvertex,
const unsigned & id_triangleface,
const unsigned & n,
std::vector< unsigned > & faceinfo ) const

Definition at line 2194 of file SbPolyhedron.cxx.

2196 {
2197 faceinfo.clear();
2198 faceinfo.push_back(idfirstvertex);//point
2199 faceinfo.push_back(prev_edgeface);//neighbour face
2200 faceinfo.push_back(top2bottomvertexid(idfirstvertex));//point
2201 faceinfo.push_back(id_triangleface+n-2);//neighbour face
2202 faceinfo.push_back(top2bottomvertexid(idsecondvertex));//point
2203 faceinfo.push_back(next_edgeface);//neighbour face
2204 faceinfo.push_back(idsecondvertex);//point
2205 faceinfo.push_back(id_triangleface);//neighbour face
2206 setupface(id_extedge,faceinfo);
2207}

◆ setupface()

void SbPolyhedronPolygonXSect::Internals::setupface ( const unsigned & face_id,
const std::vector< unsigned > & v ) const

Definition at line 2187 of file SbPolyhedron.cxx.

2187 {
2188 assert(v.size()==8);
2189 sbpolyhedron->m_pF[face_id] = SbFacet(v.at(0),v.at(1),v.at(2),v.at(3),v.at(4),v.at(5),v.at(6),v.at(7));
2190}

◆ top2bottomfaceid()

unsigned SbPolyhedronPolygonXSect::Internals::top2bottomfaceid ( const unsigned & topid) const

Definition at line 2235 of file SbPolyhedron.cxx.

2235 {
2236 if (topid<=ntriangles)
2237 return topid+ntriangles;//triangle
2238 return topid;//side face
2239}

◆ top2bottomvertexid()

unsigned SbPolyhedronPolygonXSect::Internals::top2bottomvertexid ( const unsigned & topid) const

Definition at line 2228 of file SbPolyhedron.cxx.

2228 {
2229 if (topid<=n)
2230 return topid+n;//original vertex
2231 return topid+nextraexternalvertices+nextrainternalvertices;//added extra vertex;
2232}

◆ triangulate()

void SbPolyhedronPolygonXSect::Internals::triangulate ( )

Definition at line 1994 of file SbPolyhedron.cxx.

1995{
1996 poly = new PolygonTriangulator(*x,*y);
1997}

Member Data Documentation

◆ dz

double SbPolyhedronPolygonXSect::Internals::dz

Definition at line 1926 of file SbPolyhedron.cxx.

◆ edges_external

std::set<Edge> SbPolyhedronPolygonXSect::Internals::edges_external

Definition at line 1937 of file SbPolyhedron.cxx.

◆ edges_internal

std::set<Edge> SbPolyhedronPolygonXSect::Internals::edges_internal

Definition at line 1936 of file SbPolyhedron.cxx.

◆ edges_with_extra_vertex

std::set<Edge> SbPolyhedronPolygonXSect::Internals::edges_with_extra_vertex

Definition at line 1939 of file SbPolyhedron.cxx.

◆ edgewithextravertex_2_id

std::map<Edge,unsigned> SbPolyhedronPolygonXSect::Internals::edgewithextravertex_2_id

Definition at line 1942 of file SbPolyhedron.cxx.

◆ externaledgewithextravertex_2_2ndedgeid

std::map<Edge,unsigned> SbPolyhedronPolygonXSect::Internals::externaledgewithextravertex_2_2ndedgeid

Definition at line 1943 of file SbPolyhedron.cxx.

◆ n

unsigned SbPolyhedronPolygonXSect::Internals::n

Definition at line 1929 of file SbPolyhedron.cxx.

◆ neighbourmap

std::map<Edge,const Triangle*> SbPolyhedronPolygonXSect::Internals::neighbourmap

Definition at line 1938 of file SbPolyhedron.cxx.

◆ nextraexternalvertices

unsigned SbPolyhedronPolygonXSect::Internals::nextraexternalvertices

Definition at line 1940 of file SbPolyhedron.cxx.

◆ nextrainternalvertices

unsigned SbPolyhedronPolygonXSect::Internals::nextrainternalvertices

Definition at line 1941 of file SbPolyhedron.cxx.

◆ ntriangles

unsigned SbPolyhedronPolygonXSect::Internals::ntriangles

Definition at line 1930 of file SbPolyhedron.cxx.

◆ poly

PolygonTriangulator* SbPolyhedronPolygonXSect::Internals::poly

Definition at line 1934 of file SbPolyhedron.cxx.

◆ sbpolyhedron

SbPolyhedronPolygonXSect* SbPolyhedronPolygonXSect::Internals::sbpolyhedron

Definition at line 1931 of file SbPolyhedron.cxx.

◆ x

const std::vector<double>* SbPolyhedronPolygonXSect::Internals::x

Definition at line 1927 of file SbPolyhedron.cxx.

◆ y

const std::vector<double>* SbPolyhedronPolygonXSect::Internals::y

Definition at line 1928 of file SbPolyhedron.cxx.


The documentation for this class was generated from the following file: