ok really nasty.....
struct SEdge
{
SEdge(){}
SEdge( size_t v1, size_t v2 ) : V(){V[0] = v1; V[1] = v2;};
const size_t V[2];
};
struct SFace
{
SFace(){}
SFace( size_t v1, size_t v2, size_t v3, size_t v4, size_t v5, size_t v6 ) : ????;
SFace( size_t v1, size_t v2, size_t v3, size_t v4, size_t v5, size_t v6, size_t v7, size_t v8) : ????{ };
const SEdge E[4];
const bool is_quad;
};
const SFace BaseTri(0, 1, 1, 2, 2, 0);
const SFace BaseQuad(0, 1, 1, 2, 2, 3, 3, 0);
is aesthetically unpleasant :p
struct SFace
{
SFace(){}
SFace( size_t v1, size_t v2, size_t v3, size_t v4, size_t v5, size_t v6 )
{
E[0].V[0] = v1;
E[0].V[1] = v2;
E[1].V[0] = v3;
E[1].V[1] = v4;
E[2].V[0] = v5;
E[2].V[1] = v6;
is_quad = false;
};
SFace( size_t v1, size_t v2, size_t v3, size_t v4, size_t v5, size_t v6, size_t v7, size_t v8)
{
E[0].V[0] = v1;
E[0].V[1] = v2;
E[1].V[0] = v3;
E[1].V[1] = v4;
E[2].V[0] = v5;
E[2].V[1] = v6;
E[3].V[0] = v7;
E[3].V[1] = v8;
is_quad = false;
};
SEdge E[4];
bool is_quad;
};
[edit]
Better!
struct SEdge
{
SEdge(){}
SEdge( size_t v1, size_t v2 )
{
V[0] = v1;
V[1] = v2;
};
size_t V[2];
};
struct SFace
{
SFace(){}
SFace( size_t first, bool is )
{
if(!is)
{
E[0].V[0] = first;
E[0].V[1] = first + 1;
E[1].V[0] = first + 1;
E[1].V[1] = first + 2;
E[2].V[0] = first + 2;
E[2].V[1] = first;
is_quad = false;
}
else
{
E[0].V[0] = first;
E[0].V[1] = first + 1;
E[1].V[0] = first + 1;
E[1].V[1] = first + 2;
E[2].V[0] = first + 2;
E[2].V[1] = first + 3;
E[3].V[0] = first + 3;
E[3].V[1] = first;
is_quad = true;
}
};
SEdge E[4];
bool is_quad;
};
const SFace BaseTri(0, false);
const SFace BaseQuad(0, true);
[/edit]
Edited by Buttacup, 01 January 2010 - 12:34 PM.