이것은 구조를 구현 한 방법에 따라 다릅니다. 예를 들어, 이러한 구조가있는 경우 : vertices
이 nodes
에 대한 색인, 다음, 주어진 두 개의 삼각형이다
struct Vertex
{
double position[3];
};
struct Triangle
{
unsigned int vertices[3];
};
Vertex nodes[N_NODES];
Triangle triangles[N_TRIANGLES];
, 여기서 :
Triangle t1, t2;
당신이
t1.vertices[i1] = t2.vertices[j1];
t1.vertices[i2] = t2.vertices[j2];
이있는 경우가있는 의미는 t1.vertices[i1] --- t1.vertices[i2]
은 t2.vertices[j1] --- t1.vertices[j2]
의 공유 가장자리이며, i3
및 j3
은 세 번째 veric 이 이미지에 표시된대로 각각 t1
및 t2
의 ES :
그런 다음 당신은 몇 가지 지표 변화와 플립을 할 수 있습니다. 가장 간단한 방법은 다음과 같습니다.
unsigned int t1_v[3], t2_v[3];
t1_v[0] = t1.vertices[i1]; // shared
t1_v[1] = t1.vertices[i2]; // shared
t1_v[2] = t1.vertices[i3]; // not shared
t2_v[0] = t2.vertices[j1]; // shared (unnecessary)
t2_v[1] = t2.vertices[j2]; // shared (unnecessary)
t2_v[2] = t2.vertices[j3]; // not shared
t1.vertices[0] = t1_v[0]; // previously shared
t1.vertices[1] = t1_v[2]; // previously not shared
t1.vertices[2] = t2_v[2]; // previously not shared
t2.vertices[0] = t2_v[0]; // previously shared
t2.vertices[1] = t2_v[2]; // previously not shared
t2.vertices[2] = t1_v[2]; // previously not shared
각 새 삼각형은 공유되지 않은 두 개의 정점과 공유 된 하나의 정점으로 구성됩니다.