tmp pdate

This commit is contained in:
张壹 2021-09-18 14:42:04 +08:00
parent 0ba513f2c7
commit b3367003d0
9 changed files with 315 additions and 31 deletions

View File

@ -128,16 +128,16 @@ void triangulation(std::vector<vertex2dc> &in_verts, std::vector<triangle*> &out
vertex2dc *tmp_vert = nullptr;
std::vector<vertex2dc*> assit_vert;
tmp_vert = new vertex2dc(midx - maxi_s, midy - maxi_s); // lower left corner
tmp_vert = new vertex2dc(midx - maxi_s, midy - maxi_s, 99990); // lower left corner
assit_vert.push_back(tmp_vert);
tmp_vert = new vertex2dc(midx + maxi_s, midy - maxi_s); // lower right corner
tmp_vert = new vertex2dc(midx + maxi_s, midy - maxi_s, 99991); // lower right corner
assit_vert.push_back(tmp_vert);
tmp_vert = new vertex2dc(midx + maxi_s, midy + maxi_s); // upper right corner
tmp_vert = new vertex2dc(midx + maxi_s, midy + maxi_s, 99992); // upper right corner
assit_vert.push_back(tmp_vert);
tmp_vert = new vertex2dc(midx - maxi_s, midy + maxi_s); // upper left corner
tmp_vert = new vertex2dc(midx - maxi_s, midy + maxi_s, 99993); // upper left corner
assit_vert.push_back(tmp_vert);
triangle *old_tri = nullptr, *tmp_tri = nullptr;
@ -316,6 +316,13 @@ void triangulation(std::vector<vertex2dc> &in_verts, std::vector<triangle*> &out
}
}
}
std::cout << "Insert time: " << i + 1 << std::endl;
for (int e = 0; e < out_tris.size(); ++e)
{
std::cout << out_tris[e]->vert[0]->id << " " << out_tris[e]->vert[1]->id << " " << out_tris[e]->vert[2]->id << std::endl;
}
std::cout << "===================\n";
}
// remove any triangles has an assistant vertex from out_tris

View File

@ -12,6 +12,8 @@
#include "cmath"
#include "vector"
#include "iostream"
#define ZERO 1e-5
// Start vertex definition
@ -118,16 +120,16 @@ void triangulation(std::vector<vertex2dc> &in_verts, std::vector<triangle> &out_
vertex2dc *tmp_vert = nullptr;
std::vector<vertex2dc*> assit_vert;
tmp_vert = new vertex2dc(midx - maxi_s, midy - maxi_s); // lower left corner
tmp_vert = new vertex2dc(midx - maxi_s, midy - maxi_s, 99990); // lower left corner
assit_vert.push_back(tmp_vert);
tmp_vert = new vertex2dc(midx + maxi_s, midy - maxi_s); // lower right corner
tmp_vert = new vertex2dc(midx + maxi_s, midy - maxi_s, 99991); // lower right corner
assit_vert.push_back(tmp_vert);
tmp_vert = new vertex2dc(midx + maxi_s, midy + maxi_s); // upper right corner
tmp_vert = new vertex2dc(midx + maxi_s, midy + maxi_s, 99992); // upper right corner
assit_vert.push_back(tmp_vert);
tmp_vert = new vertex2dc(midx - maxi_s, midy + maxi_s); // upper left corner
tmp_vert = new vertex2dc(midx - maxi_s, midy + maxi_s, 99993); // upper left corner
assit_vert.push_back(tmp_vert);
triangle *tmp_tri = nullptr;
@ -206,6 +208,13 @@ void triangulation(std::vector<vertex2dc> &in_verts, std::vector<triangle> &out_
tmp_tri = cnst_tri[c];
delete tmp_tri; tmp_tri = nullptr;
}
std::cout << "Insert time: " << i + 1 << std::endl;
for (int e = 0; e < exist_tri.size(); ++e)
{
std::cout << exist_tri[e]->vert[0]->id << " " << exist_tri[e]->vert[1]->id << " " << exist_tri[e]->vert[2]->id << std::endl;
}
std::cout << "===================\n";
}
// remove any triangles has an assistant vertex from exist_tri

View File

@ -5,8 +5,7 @@
int main(int argc, char const *argv[])
{
/*
std::vector<vertex2dc> points(21);
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);
@ -14,6 +13,7 @@ int main(int argc, char const *argv[])
points[4].set(2.5, 0.5, 4);
points[5].set(4.1, 0.7, 5);
points[6].set(5.7, 1.8, 6);
/*
points[7].set(5.1, 3.4, 7);
points[8].set(2.5, 4.4, 8);
points[9].set(1.2, 3.7, 9);
@ -30,6 +30,7 @@ int main(int argc, char const *argv[])
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);
@ -38,6 +39,7 @@ int main(int argc, char const *argv[])
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))
{

View File

@ -5,19 +5,16 @@ $Nodes
7
1 -0.8 -0.8 0.0
2 0.4 -1.2 0.0
3 1.2 0.9 0.0
4 -0.4 0.5 0.0
5 0.2 -0.15 0.0
6 0.5 0.375 0.0
7 0.7 -0.15 0.0
3 1.2 -0.9 0.0
4 1.6 0.1 0.0
5 2.5 0.5 0.0
6 4.1 0.7 0.0
7 5.7 1.8 0.0
$EndNodes
$Elements
7
1 2 0 1 2 5
2 2 0 4 1 5
3 2 0 3 4 6
4 2 0 4 5 6
5 2 0 5 2 7
6 2 0 3 6 7
7 2 0 6 5 7
4
1 2 0 3 4 2
2 2 0 4 3 5
3 2 0 7 5 6
4 2 0 5 3 6
$EndElements

View File

@ -1,8 +1,5 @@
7
1 -1 5 2
2 -1 1 4
3 -1 4 6
4 2 7 3
5 1 -1 7
6 3 7 -1
7 4 5 6
4
1 2 -1 -1
2 1 4 -1
3 -1 4 -1
4 2 -1 3

14
demo_back.off Normal file
View File

@ -0,0 +1,14 @@
OFF
7 5 0
-0.8 -0.8 0.0
0.4 -1.2 0.0
1.2 -0.9 0.0
1.6 0.1 0.0
2.5 0.5 0.0
4.1 0.7 0.0
5.7 1.8 0.0
3 0 1 3
3 1 2 3
3 3 2 4
3 4 2 5
3 4 5 6

76
demo_backup.cpp Normal file
View File

@ -0,0 +1,76 @@
#include "delaunay_backup.h"
#include "iostream"
#include "fstream"
#include "iomanip"
int main(int argc, char const *argv[])
{
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(1.6, 0.1, 3);
points[4].set(2.5, 0.5, 4);
points[5].set(4.1, 0.7, 5);
points[6].set(5.7, 1.8, 6);
/*
points[7].set(5.1, 3.4, 7);
points[8].set(2.5, 4.4, 8);
points[9].set(1.2, 3.7, 9);
points[10].set(-1.2, 3.9, 10);
points[11].set(-3.2, 5.1, 11);
points[12].set(-4.3, 2.9, 12);
points[13].set(-3.1, 0.7, 13);
points[14].set(-1.3, 0.6, 14);
points[15].set(-2.1, 2.9, 15);
points[16].set(0.6, 1.2, 16);
points[17].set(0.1, 2.4, 17);
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))
{
std::cerr << "Duplicated vertice detected.\n";
return 0;
}
std::vector<triangle> elements;
triangulation(points, elements);
if (fully_delaunay(elements, points))
{
std::clog << "The triangulation is fully delaunay.\n";
}
else std::clog << "The triangulation is not fully delaunay\n";
// Write a OFF file
std::cout << "OFF\n";
std::cout << points.size() << " " << elements.size() << " 0\n";
for (int i = 0; i < points.size(); i++)
{
std::cout << std::setprecision(16) << points[i].x << " " << points[i].y << " 0.0" << 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;
}
return 0;
}

84
log.txt Normal file
View File

@ -0,0 +1,84 @@
Insert time: 1
0 99991 99992
99990 99991 0
99992 99993 0
99993 99990 0
===================
Insert time: 2
99990 99991 1
1 99993 0
99993 99990 0
0 99990 1
99991 99992 1
99992 99993 1
===================
Insert time: 3
99990 99991 1
1 99993 0
99993 99990 0
0 99990 1
2 99993 1
99991 99992 2
99992 99993 2
1 99991 2
===================
Insert time: 4
99990 99991 1
1 99993 0
99993 99990 0
0 99990 1
2 3 1
99991 99992 3
1 99991 2
99992 99993 3
99993 1 3
2 99991 3
===================
Insert time: 5
99990 99991 1
1 99993 0
99993 99990 0
0 99990 1
2 3 1
1 99991 2
4 99993 3
99993 1 3
2 99991 4
99991 99992 4
99992 99993 4
3 2 4
===================
Insert time: 6
99990 99991 1
1 99993 0
99993 99990 0
0 99990 1
2 3 1
1 99991 2
4 99993 3
99993 1 3
2 99991 5
99992 99993 4
3 2 4
99991 99992 5
99992 4 5
4 2 5
===================
Insert time: 7
99990 99991 1
1 99993 0
99993 99990 0
0 99990 1
2 3 1
1 99991 2
4 99993 3
99993 1 3
2 99991 5
99992 99993 4
3 2 4
6 4 5
4 2 5
99991 99992 6
99992 4 6
5 99991 6
===================

98
log_backup.txt Normal file
View File

@ -0,0 +1,98 @@
Insert time: 1
99990 99991 0
99991 99992 0
99992 99993 0
99993 99990 0
===================
Insert time: 2
99993 99990 0
99990 99991 1
0 99990 1
99991 99992 1
99992 99993 1
99993 0 1
===================
Insert time: 3
99993 99990 0
99990 99991 1
0 99990 1
99991 99992 2
1 99991 2
99992 99993 2
99993 0 2
0 1 2
===================
Insert time: 4
99993 99990 0
99990 99991 1
0 99990 1
1 99991 2
99991 99992 3
2 99991 3
99992 99993 3
99993 0 3
0 1 3
1 2 3
===================
Insert time: 5
99993 99990 0
99990 99991 1
0 99990 1
1 99991 2
99993 0 3
0 1 3
1 2 3
99991 99992 4
2 99991 4
3 2 4
99992 99993 4
99993 3 4
===================
Insert time: 6
99993 99990 0
99990 99991 1
0 99990 1
1 99991 2
99993 0 3
0 1 3
1 2 3
3 2 4
99992 99993 4
99993 3 4
99991 99992 5
99992 4 5
2 99991 5
4 2 5
===================
Insert time: 7
99993 99990 0
99990 99991 1
0 99990 1
1 99991 2
99993 0 3
0 1 3
1 2 3
3 2 4
99993 3 4
2 99991 5
4 2 5
99992 99993 6
99993 4 6
99991 99992 6
5 99991 6
4 5 6
===================
OFF
7 5 0
-0.8 -0.8 0.0
0.4 -1.2 0.0
1.2 -0.9 0.0
1.6 0.1 0.0
2.5 0.5 0.0
4.1 0.7 0.0
5.7 1.8 0.0
3 0 1 3
3 1 2 3
3 3 2 4
3 4 2 5
3 4 5 6