コード例 #1
0
ファイル: embeddedGMap2.cpp プロジェクト: cgogn/CGoGN
void EmbeddedGMap2::unsewFaces(Dart d)
{
	Dart e = beta2(d);
	GMap2::unsewFaces(d);

	if (isOrbitEmbedded<VERTEX>())
	{
		if(!sameVertex(d,e))
		{
			Algo::Topo::setOrbitEmbeddingOnNewCell<VERTEX>(*this, e);
			Algo::Topo::copyCellAttributes<VERTEX>(*this, e, d);
		}

		d = beta0(d);
		e = beta0(e);

		if(!sameVertex(d,e))
		{
			Algo::Topo::setOrbitEmbeddingOnNewCell<VERTEX>(*this, e);
			Algo::Topo::copyCellAttributes<VERTEX>(*this, e, d);
		}
	}

	if (isOrbitEmbedded<EDGE>())
	{
		Algo::Topo::setOrbitEmbeddingOnNewCell<EDGE>(*this, e);
		Algo::Topo::copyCellAttributes<EDGE>(*this, e, d);
	}
}
コード例 #2
0
void EmbeddedGMap2::unsewFaces(Dart d)
{
	Dart e = beta2(d);
	GMap2::unsewFaces(d);

	if (isOrbitEmbedded<VERTEX>())
	{
		if(!sameVertex(d,e))
		{
			setOrbitEmbeddingOnNewCell<VERTEX>(e);
			copyCell<VERTEX>(e, d);
		}

		d = beta0(d);
		e = beta0(e);

		if(!sameVertex(d,e))
		{
			setOrbitEmbeddingOnNewCell<VERTEX>(e);
			copyCell<VERTEX>(e, d);
		}
	}

	if (isOrbitEmbedded<EDGE>())
	{
		setOrbitEmbeddingOnNewCell<EDGE>(e);
		copyCell<EDGE>(e, d);
	}
}
コード例 #3
0
void EmbeddedMap2::unsewFaces(Dart d)
{
	Dart e = phi2(d) ;
	Map2::unsewFaces(d) ;

	if (isOrbitEmbedded<VERTEX>())
	{
		Dart ee = phi1(e) ;
		if(!sameVertex(d, ee))
		{
			embedNewCell<VERTEX>(ee);
			copyCell<VERTEX>(ee, d);
		}

		Dart dd = phi1(d) ;
		if(!sameVertex(e, dd))
		{
			embedNewCell<VERTEX>(dd);
			copyCell<VERTEX>(dd, e);
		}
	}

	if (isOrbitEmbedded<EDGE>())
	{
		embedNewCell<EDGE>(e);
		copyCell<EDGE>(e, d);
	}
}
コード例 #4
0
ファイル: embeddedGMap3.cpp プロジェクト: vovythevov/SOFA
void EmbeddedGMap3::unsewVolumes(Dart d)
{
    Dart dd = alpha1(d);

    unsigned int fEmb = EMBNULL ;
    if(isOrbitEmbedded<FACE>())
        fEmb = getEmbedding<FACE>(d) ;

    GMap3::unsewVolumes(d);

    Dart dit = d;
    do
    {
        // embed the unsewn vertex orbit with the vertex embedding if it is deconnected
        if(isOrbitEmbedded<VERTEX>())
        {
            if(!sameVertex(dit, dd))
            {
                setOrbitEmbedding<VERTEX>(dit, getEmbedding<VERTEX>(dit)) ;
                setOrbitEmbeddingOnNewCell<VERTEX>(dd);
                copyCell<VERTEX>(dd, dit);
            }
            else
            {
                setOrbitEmbedding<VERTEX>(dit, getEmbedding<VERTEX>(dit)) ;
            }
        }

        dd = phi_1(dd);

        // embed the unsewn edge with the edge embedding if it is deconnected
        if(isOrbitEmbedded<EDGE>())
        {
            if(!sameEdge(dit, dd))
            {
                setOrbitEmbedding<EDGE>(dit, getEmbedding<EDGE>(dit)) ;
                setOrbitEmbeddingOnNewCell<EDGE>(dd);
                copyCell<EDGE>(dd, dit);
            }
            else
            {
                setOrbitEmbedding<EDGE>(dit, getEmbedding<EDGE>(dit)) ;
            }
        }

        if(isOrbitEmbedded<FACE>())
        {
            setDartEmbedding<FACE>(beta3(dit), fEmb) ;
            setDartEmbedding<FACE>(beta0(beta3(dit)), fEmb) ;
        }

        dit = phi1(dit);
    } while(dit != d);

    // embed the unsewn face with the face embedding
    if (isOrbitEmbedded<FACE>())
    {
        setOrbitEmbeddingOnNewCell<FACE>(dd);
        copyCell<FACE>(dd, d);
    }
}