Skip to content
Snippets Groups Projects
Commit fd3199c5 authored by Tristan Carrier Baudouin's avatar Tristan Carrier Baudouin
Browse files

rtrees

parent 0696f645
No related branches found
No related tags found
No related merge requests found
...@@ -381,6 +381,7 @@ void Filler::treat_region(GRegion* gr){ ...@@ -381,6 +381,7 @@ void Filler::treat_region(GRegion* gr){
parent = fifo.front(); parent = fifo.front();
fifo.pop(); fifo.pop();
garbage.push_back(parent); garbage.push_back(parent);
n1 = new Node(); n1 = new Node();
n2 = new Node(); n2 = new Node();
n3 = new Node(); n3 = new Node();
...@@ -388,6 +389,7 @@ void Filler::treat_region(GRegion* gr){ ...@@ -388,6 +389,7 @@ void Filler::treat_region(GRegion* gr){
n5 = new Node(); n5 = new Node();
n6 = new Node(); n6 = new Node();
offsprings(gr,octree,parent,n1,n2,n3,n4,n5,n6); offsprings(gr,octree,parent,n1,n2,n3,n4,n5,n6);
data.clear(); data.clear();
data.push_back(n1); data.push_back(n1);
data.push_back(n2); data.push_back(n2);
...@@ -395,6 +397,7 @@ void Filler::treat_region(GRegion* gr){ ...@@ -395,6 +397,7 @@ void Filler::treat_region(GRegion* gr){
data.push_back(n4); data.push_back(n4);
data.push_back(n5); data.push_back(n5);
data.push_back(n6); data.push_back(n6);
for(i=0;i<6;i++){ for(i=0;i<6;i++){
ok = 0; ok = 0;
spawn = data[i]; spawn = data[i];
...@@ -402,13 +405,15 @@ void Filler::treat_region(GRegion* gr){ ...@@ -402,13 +405,15 @@ void Filler::treat_region(GRegion* gr){
x = point.x(); x = point.x();
y = point.y(); y = point.y();
z = point.z(); z = point.z();
if(inside_domain(octree,x,y,z)){ if(inside_domain(octree,x,y,z)){
compute_parameters(spawn,gr); compute_parameters(spawn,gr);
if(far_from_boundary(octree,spawn)){ if(far_from_boundary(octree,spawn)){
wrapper.set_too_close(0); wrapper.set_too_close(0);
wrapper.set_spawn(spawn); wrapper.set_spawn(spawn);
wrapper.set_parent(parent); wrapper.set_parent(parent);
rtree.Search(spawn->min,spawn->max,rtree_callback,&wrapper); rtree.Search(spawn->min,spawn->max,rtree_callback,&wrapper);
if(!wrapper.get_too_close()){ if(!wrapper.get_too_close()){
fifo.push(spawn); fifo.push(spawn);
rtree.Insert(spawn->min,spawn->max,spawn); rtree.Insert(spawn->min,spawn->max,spawn);
...@@ -464,37 +469,7 @@ double Filler::get_size(double x,double y,double z){ ...@@ -464,37 +469,7 @@ double Filler::get_size(double x,double y,double z){
return 0.25; return 0.25;
} }
Metric Filler::get_clf_metric(double x,double y,double z,GEntity* ge){ double Filler::get_size(double x,double y,double z,GEntity* ge){
SVector3 v1,v2,v3;
Metric m;
Field* field;
FieldManager* manager;
m = Metric();
manager = ge->model()->getFields();
if(manager->getBackgroundField()>0){
field = manager->get(manager->getBackgroundField());
if(field){
(*field)(x,y,z,v1,v2,v3,ge);
m.set_m11(v1.x());
m.set_m21(v1.y());
m.set_m31(v1.z());
m.set_m12(v2.x());
m.set_m22(v2.y());
m.set_m32(v2.z());
m.set_m13(v3.x());
m.set_m23(v3.y());
m.set_m33(v3.z());
}
}
return m;
}
double Filler::get_clf_size(double x,double y,double z,GEntity* ge){
double h; double h;
Field* field; Field* field;
FieldManager* manager; FieldManager* manager;
......
...@@ -19,8 +19,7 @@ class Filler{ ...@@ -19,8 +19,7 @@ class Filler{
static std::vector<MVertex*> new_vertices; static std::vector<MVertex*> new_vertices;
Metric get_metric(double,double,double); Metric get_metric(double,double,double);
double get_size(double,double,double); double get_size(double,double,double);
Metric get_clf_metric(double,double,double,GEntity*); double get_size(double,double,double,GEntity*);
double get_clf_size(double,double,double,GEntity*);
bool inside_domain(MElementOctree*,double,double,double); bool inside_domain(MElementOctree*,double,double,double);
bool far_from_boundary(MElementOctree*,Node*); bool far_from_boundary(MElementOctree*,Node*);
void compute_parameters(Node*,GEntity*); void compute_parameters(Node*,GEntity*);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment