``` side1_2 = {vertices[tetrahedra[i][1]][0] - vertices[tetrahedra[i]
[0]][0],
vertices[tetrahedra[i][1]][1] -
vertices[tetrahedra[i][0]][1],
vertices[tetrahedra[i][1]][2] -
vertices[tetrahedra[i][0]][2]};
side1_3 = {vertices[tetrahedra[i][2]][0] - vertices[tetrahedra[i]
[0]][0],
vertices[tetrahedra[i][2]][1] -
vertices[tetrahedra[i][0]][1],
vertices[tetrahedra[i][2]][2] -
vertices[tetrahedra[i][0]][2]};
side1_4 = {vertices[tetrahedra[i][3]][0] - vertices[tetrahedra[i]
[0]][0],
vertices[tetrahedra[i][3]][1] -
vertices[tetrahedra[i][0]][1],
vertices[tetrahedra[i][3]][2] -
vertices[tetrahedra[i][0]][2]};
side2_3 = {vertices[tetrahedra[i][2]][0] - vertices[tetrahedra[i]
[1]][0],
vertices[tetrahedra[i][2]][1] -
vertices[tetrahedra[i][1]][1],
vertices[tetrahedra[i][2]][2] -
vertices[tetrahedra[i][1]][2]};
side2_4 = {vertices[tetrahedra[i][3]][0] - vertices[tetrahedra[i]
[1]][0],
vertices[tetrahedra[i][3]][1] -
vertices[tetrahedra[i][1]][1],
vertices[tetrahedra[i][3]][2] -
vertices[tetrahedra[i][1]][2]};
V6 = ((side1_2 ^ side1_3) * side1_4); // V * 6
NC1 = side2_4 ^ side2_3;
NC2 = side1_3 ^ side1_4;
NC3 = side1_4 ^ side1_2;
NC4 = side1_2 ^ side1_3;
NC1_m = [Link]();
NC2_m = [Link]();
NC3_m = [Link]();
NC4_m = [Link]();
m = -(V6 - V06[i])/(NC1_m*NC1_m + NC2_m*NC2_m + NC3_m*NC3_m +
NC4_m*NC4_m);
#ifdef SMOOTH
vertices[tetrahedra[i][0]][0] += m*NC1.x; vertices[tetrahedra[i]
[1]][0] += m*NC2.x; vertices[tetrahedra[i][2]][0] += m*NC3.x;
vertices[tetrahedra[i][3]][0] += m*NC4.x;
vertices[tetrahedra[i][0]][1] += m*NC1.y; vertices[tetrahedra[i]
[1]][1] += m*NC2.y; vertices[tetrahedra[i][2]][1] += m*NC3.y;
vertices[tetrahedra[i][3]][1] += m*NC4.y;
vertices[tetrahedra[i][0]][2] += m*NC1.z; vertices[tetrahedra[i]
[1]][2] += m*NC2.z; vertices[tetrahedra[i][2]][2] += m*NC3.z;
vertices[tetrahedra[i][3]][2] += m*NC4.z;
#else
NC1 *= m; NC2 *= m; NC3 *= m; NC4 *= m;
for(auto D : dupIndices[tetrahedra[i][0]])
{
vertices[D][0] += NC1.x;
vertices[D][1] += NC1.y;
vertices[D][2] += NC1.z;
}
for(auto D : dupIndices[tetrahedra[i][1]])
{
vertices[D][0] += NC2.x;
vertices[D][1] += NC2.y;
vertices[D][2] += NC2.z;
}
for(auto D : dupIndices[tetrahedra[i][2]])
{
vertices[D][0] += NC3.x;
vertices[D][1] += NC3.y;
vertices[D][2] += NC3.z;
}
for(auto D : dupIndices[tetrahedra[i][3]])
{
vertices[D][0] += NC4.x;
vertices[D][1] += NC4.y;
vertices[D][2] += NC4.z;
}
#endif```