tmp pdate
This commit is contained in:
parent
0ba513f2c7
commit
b3367003d0
15
delaunay.h
15
delaunay.h
@ -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
|
||||
|
@ -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
|
6
demo.cpp
6
demo.cpp
@ -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))
|
||||
{
|
||||
|
23
demo.msh
23
demo.msh
@ -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
|
||||
|
13
demo.neigh
13
demo.neigh
@ -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
14
demo_back.off
Normal 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
76
demo_backup.cpp
Normal 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
84
log.txt
Normal 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
98
log_backup.txt
Normal 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
|
Loading…
Reference in New Issue
Block a user