Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] the strange result of odt-optimization in mesh_3_example

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] the strange result of odt-optimization in mesh_3_example


Chronological Thread 
  • From: Shang Feifei <>
  • To:
  • Subject: Re: [cgal-discuss] the strange result of odt-optimization in mesh_3_example
  • Date: Tue, 17 Feb 2015 11:19:09 +0800

Hi, Jane

Thank you for reply.

I find Lloyd optimization followed by perturbation is the best choice for me to obtain the best solution.

Shang

On Fri, Feb 13, 2015 at 4:54 PM, Jane Tournois <> wrote:
Hi Shang,

you are right.
Once exudation has been performed, there are weights on inside vertices that cannot be handled by ODT.
ODT should be called before exudation.

You can also use Odt_options as a parameter for make_mesh_3, as listed here
http://doc.cgal.org/latest/Mesh_3/group__PkgMesh__3Functions.html#ga9159a9a2d11e027577fd8212956896f7

Best,
Jane.

Le 24/01/2015 09:05, Shang Feifei a écrit :
Hi, all,

Maybe I find the reason why the surface becomes rough and uneven. The arguments of make_mesh_3(), perturb, exude should be turned off. That is,

 C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria,no_perturb(),no_exude());

Then perform the odt_optimization_mesh_3(). The result is fine.

Shang

On Sat, Jan 24, 2015 at 12:41 AM, Shang Feifei <> wrote:
Hi all,

I use project "mesh_polyhedral_domain_with_features" in mesh_3_example.sln. The inputting file as  polyhedral domain is attached. I changed the .cpp file is as follows.

int main()
{
  // Create domain
  Mesh_domain domain("D:/Program Files (x86)/CGAL-3.8/examples/Mesh_3/data/boxsub2cyl.off");
  
  // Get sharp features
  domain.detect_features();

  // Mesh criteria
  Mesh_criteria criteria(edge_size = 2.5,
                         facet_angle = 25, facet_size = 2.5, facet_distance = 0.5,
                         cell_radius_edge_ratio = 3, cell_size = 2.5);
  
  // Mesh generation
  std::cout<<"Mesh generation ...";
  C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria);
 

  std::ofstream medit_file("boxsub2cyl_features.mesh");
  c3t3.output_to_medit(medit_file);
  medit_file.close();

  //ODT optimization
  CGAL::odt_optimize_mesh_3(c3t3, domain, time_limit=30);

  std::ofstream medit_file_odt("boxsub2cyl_features_odt.mesh");
  c3t3.output_to_medit(medit_file_odt);
  medit_file_odt.close();

  //Exude
  std::cout<<"Exude optimization ...";
  CGAL::exude_mesh_3(c3t3, sliver_bound=10, time_limit=10);
  std::cout<<" done"<<std::endl;
  
  std::ofstream medit_file_exu("boxsub2cyl_features_exu.mesh");
  c3t3.output_to_medit(medit_file_exu);
  medit_file_exu.close();
}

It runs successfully. Then I transform the result files into .vtk file to view results. The result after make_mesh_3() is fine. But boxsub2cyl_features_odt is strange. It misses some tets and becomes rough and uneven in surface. It seems that the surface doesn't respect the domain. The domain odt_optimization_mesh_3() used is also features-caught. It should keep the features like make_mesh_3(). It is confusing.

Any reply is appreciated.

Shang Fei-Fei


-- 
Jane Tournois, PhD
R&D Engineer at GeometryFactory
http://www.geometryfactory.com/




Archive powered by MHonArc 2.6.18.

Top of Page