Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Removing faces from a polygon mesh

Subject: CGAL users discussion list

List archive

[cgal-discuss] Removing faces from a polygon mesh


Chronological Thread 
  • From: Claus Volko <>
  • To:
  • Subject: [cgal-discuss] Removing faces from a polygon mesh
  • Date: Thu, 7 Sep 2023 15:06:04 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:CGykvqteVyPRc7Laah2ivA2Z7skCTYAji2hC6mlwRA09TyXGra 2TdaUgvyMc1gx7ZJh5o6H6BEGBKUmslqKdkrNhR4tKPTOW8ldASbsP0WKM+UyGJ8STzI9gPO JbAtBD4b7LfBVHZKTBkW+F+r8bqbHpnpxAx92utkuFJjsaCZ2Imj0JbjpzZXcGITWua6BYKL Osou584xawc3Ueacq2QlEDQuj4vtXO0L72fBIcABYjyQ+WyRel8qTzHRS01goXF2on+8ZszU H11yjCoomzufCyzRHRk0fV8pRtgdPkjvdTGcCWjcARCzP0ziKlfp5oVbGutC085Muv9FEput /RpApIBbU+11rhOkWO5Tf90Qjp1zgjr1X4z0WDvHflqcvlABonFston+tiA1rkwntlmOs5/L NA3mqfuZYSJwjHhj7B69/BUAwvvlaooEAljfUYgxVkIMsjgf5q3M8iFXFuYdI99RHBmcQa+S 5VfYbhDcNtABGnhrbizy9SKZKXLy0O91y9MzU/U4SuokRrdTZCvgUlLYUk7wk9HJ5Rceg628 3Udqtvj71AVckQcOZ0A/oAW9K+DijXTQvLK3/6GyWvKEgrAQO7l3fM2sRC2Mi6PJgTiJcikp XIV11V8WY0ZkL1EMWLmJlG6ArETmmxVSnkjpg23ekzhpTsAL7wdSGTQlEnlMWt5/0ZH83AQv 62fJZbGeXqI2fiEZtAmwf+R55RI38DV9B9gKdyZ3ue5sbQboH6vO3Sd/jeYLLrDDY/Q2v6Rm AOWTDiTf8wmnxDmkWI9SQ5d0mdCXAXp6gAYZQy19JjuLQlJ8lLrhUfj0i/64WCNSBC25ZGDn dDHA==
  • Ironport-phdr: A9a23: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 nKN9ZhhpFapluTJwT1iAkImlw==
  • Ironport-sdr: 64f9cac9_EhaZG1at18fru9o9kggXfxf70HzkO25p0SevaatCGkk98/O vUBi6Xq5l+P7xS8NtEWAOpUhJcFdLY7SsTeSxBw==

I would like to remove faces from a polygon mesh. How can this be done?

Here is some code for you, which shows what I'm trying to do. In words, I try to remove faces that cannot be seen by the camera (the position of which is specified in camera_pos_x, camera_pos_y, camera_pos_z). These faces can be detected by computing the dot product of their vector to the camera and their normal vector. If it is close to zero, they are invisible and have to be removed.

  for (auto f : faces(polygon_mesh))
  {
      auto v0 = f->halfedge()->vertex()->point();
      auto v1 = f->halfedge()->next()->vertex()->point();
      auto v2 = f->halfedge()->next()->next()->vertex()->point();
      auto vmx = (v0.x() + v1.x() + v2.x()) / 3;
      auto vmy = (v0.y() + v1.y() + v2.y()) / 3;
      auto vmz = (v0.z() + v1.z() + v2.z()) / 3;
      auto w = f->plane().orthogonal_vector();
      auto wx = w.x() - camera_pos_x;
      auto wy = w.y() - camera_pos_y;
      auto wz = w.z() - camera_pos_z;
      auto w1 = new CGAL::Vector_3<Kernel>(wx, wy, wz);
      w1 = normalize(w1);
      auto res = w1->x() * vmx + w1->y() * vmy + w1->z() * vmz;
      if ((res > 0 && res < .75) || (res < 0 && res > -.75))

  }

Thank you in advance.

--
Dipl.-Ing. Dr. Claus D. Volko, BSc
http://www.cdvolko.net/






Archive powered by MHonArc 2.6.19+.

Top of Page