328 |
|
|
329 |
bool __createTriangleSurface(VerticesList& verticesListes, |
bool __createTriangleSurface(VerticesList& verticesListes, |
330 |
EdgePairList& localTriangleList, |
EdgePairList& localTriangleList, |
|
EdgesRef& edgesRef, |
|
331 |
const Shape& S , |
const Shape& S , |
332 |
std::vector<const Edge*>& cutEdges, |
std::vector<const Edge*>& cutEdges, |
333 |
const Cell& currentCell, |
const Cell& currentCell, |
338 |
EdgePairList& triangleListes, |
EdgePairList& triangleListes, |
339 |
EdgePairList& localTriangleListesEdges, |
EdgePairList& localTriangleListesEdges, |
340 |
VerticesList& verticesListes, |
VerticesList& verticesListes, |
|
EdgesRef& edgesRef, |
|
341 |
MotherCellList& cellListObject); |
MotherCellList& cellListObject); |
342 |
|
|
343 |
bool __isDegenerate(const Triangle& T); |
bool __isDegenerate(const Triangle& T); |
2492 |
bool SurfaceMeshGenerator::Internals:: |
bool SurfaceMeshGenerator::Internals:: |
2493 |
__createTriangleSurface(VerticesList& verticesListes, |
__createTriangleSurface(VerticesList& verticesListes, |
2494 |
EdgePairList& localTriangleList, |
EdgePairList& localTriangleList, |
|
EdgesRef& edgesRef, |
|
2495 |
const Shape& S , |
const Shape& S , |
2496 |
std::vector<const Edge*>& cutEdges, |
std::vector<const Edge*>& cutEdges, |
2497 |
const Cell& currentCell, |
const Cell& currentCell, |
2506 |
TinyVector<3> V=__splitEdge(*cutEdges[i], S); |
TinyVector<3> V=__splitEdge(*cutEdges[i], S); |
2507 |
verticesListes[*cutEdges[i]] |
verticesListes[*cutEdges[i]] |
2508 |
= new Vertex(V); |
= new Vertex(V); |
|
edgesRef[*cutEdges[i]] = 1; |
|
2509 |
} |
} |
2510 |
|
|
2511 |
//! Addes a triangle to the list. |
//! Addes a triangle to the list. |
2542 |
TinyVector<3> V=__splitEdge(*cutEdges[i], S); |
TinyVector<3> V=__splitEdge(*cutEdges[i], S); |
2543 |
verticesListes[*cutEdges[i]] |
verticesListes[*cutEdges[i]] |
2544 |
= new Vertex(V); |
= new Vertex(V); |
|
edgesRef[*cutEdges[i]] = 1; |
|
2545 |
} |
} |
2546 |
|
|
2547 |
//! Orders the Edges using a map ! |
//! Orders the Edges using a map ! |
2622 |
EdgePairList& triangleListes, |
EdgePairList& triangleListes, |
2623 |
EdgePairList& localTriangleListesEdges, |
EdgePairList& localTriangleListesEdges, |
2624 |
VerticesList& verticesListes, |
VerticesList& verticesListes, |
|
EdgesRef& edgesRef, |
|
2625 |
MotherCellList& cellListObject) |
MotherCellList& cellListObject) |
2626 |
{ |
{ |
2627 |
|
Vector<unsigned> references(SMesh.nbEdges()); |
2628 |
|
|
2629 |
|
for (unsigned i=0; i<references.size(); ++i) { |
2630 |
|
Edge& e = SMesh.edge(i); |
2631 |
|
references[i] = e.reference(); |
2632 |
|
e.reference() = 0; |
2633 |
|
} |
2634 |
|
|
2635 |
EdgePairList localTriangleList; |
EdgePairList localTriangleList; |
2636 |
|
|
2637 |
|
|
2638 |
for (size_t i = 0; i<SMesh.nbEdges(); i++) { |
for (size_t i = 0; i<SMesh.nbEdges(); i++) { |
2639 |
Edge& e = SMesh.edge(i); |
Edge& e = SMesh.edge(i); |
2640 |
#warning THIS TEST IS NOT ENOUGH! THINK TO THE BORDER! |
#warning THIS TEST IS NOT ENOUGH! THINK TO THE BORDER! |
2641 |
if(e(0).reference() != e(1).reference()) { |
if(e(0).reference() != e(1).reference()) { |
2642 |
verticesListes[e] = new Vertex(__splitEdge(e, S)); |
verticesListes[e] = new Vertex(__splitEdge(e, S)); |
2643 |
edgesRef[e] = 1; |
e.reference() = 1; |
2644 |
} |
} |
2645 |
} |
} |
2646 |
|
|
2738 |
Edge& e = (*currentAddedEdge); |
Edge& e = (*currentAddedEdge); |
2739 |
if (e(0).reference() != e(1).reference()) { |
if (e(0).reference() != e(1).reference()) { |
2740 |
e.reference() = 1; |
e.reference() = 1; |
|
edgesRef[e] = 1; |
|
2741 |
} |
} |
2742 |
currentAddedEdge++; |
currentAddedEdge++; |
2743 |
} |
} |
2827 |
|
|
2828 |
for(size_t ie=0; ie<6; ++ie) { |
for(size_t ie=0; ie<6; ++ie) { |
2829 |
const Edge& e = currentT->edge(ie); |
const Edge& e = currentT->edge(ie); |
2830 |
if (edgesRef.find(e) != edgesRef.end()) { |
if (e.reference() == 1) { |
2831 |
cutEdges.push_back(&e); |
cutEdges.push_back(&e); |
2832 |
} |
} |
2833 |
} |
} |
2834 |
|
|
2835 |
bool jobDone2=__createTriangleSurface(verticesListes, |
bool jobDone2=__createTriangleSurface(verticesListes, |
2836 |
localTriangleList, |
localTriangleList, |
|
edgesRef, |
|
2837 |
S, cutEdges, |
S, cutEdges, |
2838 |
currentCell, |
currentCell, |
2839 |
cellList); |
cellList); |
2868 |
} |
} |
2869 |
} |
} |
2870 |
} |
} |
2871 |
|
|
2872 |
|
for (unsigned i=0; i<references.size(); ++i) { |
2873 |
|
SMesh.edge(i).reference() = references[i]; |
2874 |
|
} |
2875 |
} |
} |
2876 |
|
|
2877 |
void |
void |
3192 |
EdgePairList triangleListes; |
EdgePairList triangleListes; |
3193 |
EdgePairList localTriangleListesEdges; |
EdgePairList localTriangleListesEdges; |
3194 |
VerticesList verticesListes; |
VerticesList verticesListes; |
|
EdgesRef edgesRef; |
|
3195 |
MotherCellList cellListObject; |
MotherCellList cellListObject; |
3196 |
|
|
3197 |
SMesh.createReferences(*(O.shape())); |
SMesh.createReferences(*(O.shape())); |
3198 |
|
|
3199 |
__createSurface(SMesh, *(O.shape()), triangleListes, localTriangleListesEdges, |
__createSurface(SMesh, *(O.shape()), triangleListes, localTriangleListesEdges, |
3200 |
verticesListes, edgesRef, cellListObject); |
verticesListes, cellListObject); |
3201 |
|
|
3202 |
__dataStructureConvertion(O, triangleListes, verticesListes, cellListObject); |
__dataStructureConvertion(O, triangleListes, verticesListes, cellListObject); |
3203 |
ffout(3) << " done\n"; |
ffout(3) << " done\n"; |