tmp update

This commit is contained in:
2021-09-18 08:56:06 +08:00
parent 081012221e
commit 0ba513f2c7
6 changed files with 631 additions and 158 deletions

View File

@@ -1,8 +1,11 @@
#include "delaunay.h"
#include "iostream"
#include "fstream"
#include "iomanip"
int main(int argc, char const *argv[])
{
/*
std::vector<vertex2dc> points(21);
points[0].set(-0.8, -0.8, 0);
points[1].set(0.4, -1.2, 1);
@@ -25,6 +28,16 @@ int main(int argc, char const *argv[])
points[18].set(2.4, 2.8, 18);
points[19].set(3.5, 1.8, 19);
points[20].set(3.6, 3.1, 20);
*/
std::vector<vertex2dc> points(7);
points[0].set(-0.8, -0.8, 0);
points[1].set(0.4, -1.2, 1);
points[2].set(1.2, 0.9, 2);
points[3].set(-0.4, 0.5, 3);
points[4].set(0.2, -0.15, 4);
points[5].set(0.5, 0.375, 5);
points[6].set(0.7, -0.15, 6);
if (duplicated_vertex(points))
{
@@ -32,7 +45,7 @@ int main(int argc, char const *argv[])
return 0;
}
std::vector<triangle> elements;
std::vector<triangle*> elements;
triangulation(points, elements);
if (fully_delaunay(elements, points))
@@ -41,17 +54,51 @@ int main(int argc, char const *argv[])
}
else std::clog << "The triangulation is not fully delaunay\n";
std::cout << "OFF\n";
std::cout << points.size() << " " << elements.size() << " 0\n";
for (int i = 0; i < points.size(); ++i)
// Write a Gmsh's .msh file
std::ofstream outfile("demo.msh");
outfile << "$MeshFormat" << std::endl << "2.2 0 8" << std::endl << "$EndMeshFormat "<<std::endl;
outfile << "$Nodes" << std::endl << points.size() << std::endl;
for (int i = 0; i < points.size(); i++)
{
std::cout << points[i].x << " " << points[i].y << " 0\n";
outfile << points[i].id + 1 << " " << std::setprecision(16)
<< points[i].x << " " << points[i].y << " 0.0" << std::endl;
}
for (int i = 0; i < elements.size(); ++i)
outfile<<"$EndNodes"<<std::endl;
outfile << "$Elements" << std::endl << elements.size() <<std::endl;
for (int i = 0; i < elements.size(); i++)
{
std::cout << "3 " << elements[i].vert[0]->id << " " << elements[i].vert[1]->id << " " << elements[i].vert[2]->id << std::endl;
outfile << i + 1 << " 2 0";
for (int j = 0; j < 3; j++)
{
outfile << " " << elements[i]->vert[j]->id + 1;
}
outfile << std::endl;
}
outfile << "$EndElements"<< std::endl;
outfile.close();
// write a neighbor file
outfile.open("demo.neigh");
outfile << elements.size() << std::endl;
for (int i = 0; i < elements.size(); i++)
{
outfile << i + 1;
for (int j = 0; j < 3; j++)
{
if (elements[i]->neigh[j] != nullptr)
{
outfile << " " << elements[i]->neigh[j]->id + 1;
}
else outfile << " -1";
}
outfile << std::endl;
}
outfile.close();
// destroy allocated memories
for (int i = 0; i < elements.size(); i++)
{
delete elements[i];
}
return 0;
}