added update of face edge sel on TriSplit::Apply
This commit is contained in:
parent
40781a5455
commit
d4f5f73324
|
@ -913,48 +913,48 @@ public:
|
||||||
{
|
{
|
||||||
vB->P() = Center(f);
|
vB->P() = Center(f);
|
||||||
|
|
||||||
//i tre vertici della faccia da dividere
|
//three vertices of the face to be split
|
||||||
VertexType *V0,*V1,*V2;
|
VertexType *V0,*V1,*V2;
|
||||||
V0 = f->V(0);
|
V0 = f->V(0);
|
||||||
V1 = f->V(1);
|
V1 = f->V(1);
|
||||||
V2 = f->V(2);
|
V2 = f->V(2);
|
||||||
|
|
||||||
//risistemo la faccia di partenza
|
//reupdate initial face
|
||||||
(*f).V(2) = &(*vB);
|
(*f).V(2) = &(*vB);
|
||||||
//Faccia nuova #1
|
//new face #1
|
||||||
(*f1).V(0) = &(*vB);
|
(*f1).V(0) = &(*vB);
|
||||||
(*f1).V(1) = V1;
|
(*f1).V(1) = V1;
|
||||||
(*f1).V(2) = V2;
|
(*f1).V(2) = V2;
|
||||||
//Faccia nuova #2
|
//new face #2
|
||||||
(*f2).V(0) = V0;
|
(*f2).V(0) = V0;
|
||||||
(*f2).V(1) = &(*vB);
|
(*f2).V(1) = &(*vB);
|
||||||
(*f2).V(2) = V2;
|
(*f2).V(2) = V2;
|
||||||
|
|
||||||
if(f->HasFFAdjacency())
|
if(f->HasFFAdjacency())
|
||||||
{
|
{
|
||||||
//adiacenza delle facce adiacenti a quelle aggiunte
|
//update adjacency
|
||||||
f->FFp(1)->FFp(f->FFi(1)) = f1;
|
f->FFp(1)->FFp(f->FFi(1)) = f1;
|
||||||
f->FFp(2)->FFp(f->FFi(2)) = f2;
|
f->FFp(2)->FFp(f->FFi(2)) = f2;
|
||||||
|
|
||||||
//adiacenza ff
|
// ff adjacency
|
||||||
FaceType * FF0,*FF1,*FF2;
|
FaceType * FF0,*FF1,*FF2;
|
||||||
FF0 = f->FFp(0);
|
FF0 = f->FFp(0);
|
||||||
FF1 = f->FFp(1);
|
FF1 = f->FFp(1);
|
||||||
FF2 = f->FFp(2);
|
FF2 = f->FFp(2);
|
||||||
|
|
||||||
//Indici di adiacenza ff
|
//ff adjacency indexes
|
||||||
char FFi0,FFi1,FFi2;
|
char FFi0,FFi1,FFi2;
|
||||||
FFi0 = f->FFi(0);
|
FFi0 = f->FFi(0);
|
||||||
FFi1 = f->FFi(1);
|
FFi1 = f->FFi(1);
|
||||||
FFi2 = f->FFi(2);
|
FFi2 = f->FFi(2);
|
||||||
|
|
||||||
//adiacenza della faccia di partenza
|
//initial face
|
||||||
(*f).FFp(1) = &(*f1);
|
(*f).FFp(1) = &(*f1);
|
||||||
(*f).FFi(1) = 0;
|
(*f).FFi(1) = 0;
|
||||||
(*f).FFp(2) = &(*f2);
|
(*f).FFp(2) = &(*f2);
|
||||||
(*f).FFi(2) = 0;
|
(*f).FFi(2) = 0;
|
||||||
|
|
||||||
//adiacenza della faccia #1
|
//face #1
|
||||||
(*f1).FFp(0) = f;
|
(*f1).FFp(0) = f;
|
||||||
(*f1).FFi(0) = 1;
|
(*f1).FFi(0) = 1;
|
||||||
|
|
||||||
|
@ -964,7 +964,7 @@ public:
|
||||||
(*f1).FFp(2) = &(*f2);
|
(*f1).FFp(2) = &(*f2);
|
||||||
(*f1).FFi(2) = 1;
|
(*f1).FFi(2) = 1;
|
||||||
|
|
||||||
//adiacenza della faccia #2
|
//face #2
|
||||||
(*f2).FFp(0) = f;
|
(*f2).FFp(0) = f;
|
||||||
(*f2).FFi(0) = 2;
|
(*f2).FFi(0) = 2;
|
||||||
|
|
||||||
|
@ -974,6 +974,23 @@ public:
|
||||||
(*f2).FFp(2) = FF2;
|
(*f2).FFp(2) = FF2;
|
||||||
(*f2).FFi(2) = FFi2;
|
(*f2).FFi(2) = FFi2;
|
||||||
}
|
}
|
||||||
|
//update faceEdge Sel if needed
|
||||||
|
if (f->HasFlags())
|
||||||
|
{
|
||||||
|
bool IsFaceEdgeS[3];
|
||||||
|
//collect and clear
|
||||||
|
for (size_t i=0;i<3;i++)
|
||||||
|
{
|
||||||
|
IsFaceEdgeS[i]=(*f).IsFaceEdgeS(i);
|
||||||
|
(*f).ClearFaceEdgeS(i);
|
||||||
|
(*f1).ClearFaceEdgeS(i);
|
||||||
|
(*f2).ClearFaceEdgeS(i);
|
||||||
|
}
|
||||||
|
//set back
|
||||||
|
if (IsFaceEdgeS[0])(*f).SetFaceEdgeS(0);
|
||||||
|
if (IsFaceEdgeS[1])(*f1).SetFaceEdgeS(1);
|
||||||
|
if (IsFaceEdgeS[2])(*f2).SetFaceEdgeS(2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}; // end class TriSplit
|
}; // end class TriSplit
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue