Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] On cell deletion, do neighboring cells need neighbors to be specified?

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] On cell deletion, do neighboring cells need neighbors to be specified?


Chronological Thread 
  • From: Jane Tournois <>
  • To:
  • Subject: Re: [cgal-discuss] On cell deletion, do neighboring cells need neighbors to be specified?
  • Date: Tue, 18 Oct 2022 11:35:20 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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 U/KelY=
  • Ironport-hdrordr: A9a23:rddIna1nkuhCeEyFOkZj2wqjBFYkLtp133Aq2lEZdPU0SKGlfr OV7ZEmPH7P5wr5N0tApTntAtjnfZqYz+8N3WBzB9eftWvd1ldARbsKheCJ/9SjIVyYygc379 YDT0ERMqyVMbE3t7eY3CCIV/AewZ2s9aClgvr/1h5WIT1CWuVH8AY8Nx2SGEFsAClKbKBJbK a01455nH6bQFwyROyGPFVtZZm/m/T70K3cJSQ+Lzocwi+0oVqTmcTHOind4SxbaQpm5Y0e2V Xo+jaJnZmejw==
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 634e735b_6FtF8cwSFe6KV3gbeNqjIZ+onGccUPjH0drf6ZBXPxmWe1C +AUn6IgV8WWLTIs6+NKCM35ukcXMzjsUk+GrWUA==

Hello Adam,

you'd better use the other `flip_n_to_m()` internal function, that is actually calling the one you mention.

See https://github.com/CGAL/cgal/blob/c1c7f4ad9a4cd669e33ca07a299062a461581812/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/flip_edges.h#L1013

The parameters are the following :

* edge : is the edge to be flipped

* c3t3 : the Mesh_complex_3_in_triangulation_3 containing the triangulation
* boundary_vertices : a std::vector containing the vertices that share a cell with `edge` and are on a boundary (with respect to subdomains indices)

* criterion = CGAL::Tetrahedral_remeshing::internal::MIN_ANGLE_BASED

* inc_cells : its internal type is a `std::unordered_map<Vertex_handle,
    boost::optional<boost::container::small_vector<Cell_handle, 64> > > `
It contains for each vertex of the triangulation (or at least the vertices that take part into the flip) a container of its incident cells (to avoid computing it too many times)

* visitor : you can stick to the default `CGAL::Tetrahedral_remeshing::internal::Default_remeshing_visitor()` defined in `CGAL\Tetrahedral_remeshing\internal\tetrahedral_adaptive_remeshing_impl.h`

Hope it helps!

Best,

Jane.

-- 
Jane Tournois, PhD
R&D Engineer at GeometryFactory
http://www.geometryfactory.com/
Le 18/10/2022 à 02:16, Adam Getchell ( via cgal-discuss Mailing List) a écrit :
Hello Sebastien,

Thank you for this response.

I have attempted to use this function directly as suggested, however it is not documented and I’m unable to determine the parameters from reading the source code alone.

My function call looks like:

auto const result = CGAL::Tetrahedral_remeshing::internal::
    flip_n_to_m(triangulation, pivot_edge.value(), top,
    incident_cells, visitor);

I’ve looked at the code here:

https://github.com/CGAL/cgal/blob/c1c7f4ad9a4cd669e33ca07a299062a461581812/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/flip_edges.h#L707

The first parameter I’ve inferred is the triangulation upon which to make the flip.

The second parameter is an edge, which I’ve inferred is the existing edge in the 4-cell complex.

The third parameter is a Vertex_handle, which I’ve inferred is a non-participatory vertex in the flip. That is, the edge plus this vertex form a facet, and opposite the facet on both sides are the Vertex_handles that the flip will use as the new internal edge when completed. However, I do not know if this is correct.

The fourth parameter is named inc_cells, so I infer these are the incident cells around the given edge. Again, not sure if this is correct.

The fifth parameter is a template type Visitor, and I’m entirely unsure what needs to be provided there.

Any insights would be appreciated. I have an incomplete test case here:

https://github.com/acgetchell/bistellar-flip/blob/master/tests/flip_n_to_m_test.cpp

Thanks,
--  Adam Getchell
https://adamgetchell.org


On Jul 5, 2022, at 1:37 AM, Sebastien Loriot ( via cgal-discuss Mailing List) <> wrote:

Hello Adam,

did you already have a look at CGAL/Tetrahedral_remeshing/internal/flip_edges.h
flip_n_to_m() seems to be what you are looking for.
Jane is not around for a few weeks. I'm sure she will get back to
you when she's back.

Best,

Sebastien.

On 6/29/22 22:52, Adam Getchell ( via cgal-discuss Mailing List) wrote:
Hello all,
I’m working on a bistellar flip for 3D triangulations, briefly as follows:
Step 1: Find a candidate edge for which a circulator around that edge obtains 4 incident cells.
Step 2: Get the 2 vertices comprising the candidate edge.
Step 3: Get the remaining 4 vertices in the 4-cell complex (there are 6 vertices in the cell complex). Step 4: Obtain a new pivot edge between 2 different vertices for which a circulator around that pivot edge would obtain 4 new incident cells comprised of the 6 vertices.
Step 5: Find the 8 neighboring cells of the original 4-cell complex.
Step 6: Delete the old cells.
Step 7: Create the new cells using the same 6 vertices.
Step 8: Assign the 8 neighboring cells to the cells in the new 4-cell complex.
Details here: https://github.com/acgetchell/bistellar-flip <https://github.com/acgetchell/bistellar-flip> The issue is at the conclusion of Step 8, all cells have been verified as valid, cell orientations have been verified/reoriented, but the triangulation itself is not valid.
The error is: “neighbor of c has not c as neighbor” My question is, do I also need to track the 32 neighboring cells of the 8 neighbors of the 4-cell complex being flipped? (And in my test case, the 8 neighbors are all infinite.)
Is there some other mistake?
Thanks for your advice,
Adam
P.S. I have looked at the Tetrahedral Remeshing package at Sebastien Loriot’s suggestion. I’m presently unsure if any of those functions (e.g. construct_opposite_vector_3_object()) are relevant. --
Adam Getchell
https://adamgetchell.org <https://adamgetchell.org> --
You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to https://sympa.inria.fr/sympa/info/cgal-discuss

--
You are currently subscribed to cgal-discuss. To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss



--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss




Archive powered by MHonArc 2.6.19+.

Top of Page