Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Calculate polygons of projection

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Calculate polygons of projection


Chronological Thread 
  • From: Sebastien Loriot <>
  • To:
  • Subject: Re: [cgal-discuss] Calculate polygons of projection
  • Date: Tue, 5 Jul 2022 10:44:41 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23:+jBQoqvJG+t8/bXWB4ohNvaRC+fnVGVYMUV32f8akzHdYApBsoF/q tZmKTzSPvyKNzf1eIh3O9yx8R4PvJDVzYJjTlNkpX9nHywQgMeUXt7xwmXYb3rDdJWbJK5Ex 5xDMYeYdJhcolv0/ErF3m3J9CEkvU2wbuOgTraCYEidfCc8IMsboUsLd9UR38g527BVPyvX4 Ymo+5KHZQf8s9JJGjt8B5yr+EsHUMva42twUmwWPZina3eD/5W9JMt3yZCZdxMUcKEMdgKJb 7qrIIWCw4/s10xF5uVJPVrMWhZirrb6ZWBig5fNMkSoqkAqSicais7XOBeAAKtao23hojx/9 DlCnYatVSN1L/X3ovw+dSZgVH5ULattyrCSdBBTseTLp6HHW37lwvErE1tveINEo6B4BmZB8 fFeIzcIBvyBr7jukfTrF6823J1lcJCD0IA34hmMyRnCCfE8QJffBaDOzdBd1TY0wMtJGJ4yY uJAOWcxNkSZP3WjPH9IN6l9puWj20PubgBngX++tbQvxFHqmVkZPL/FaYKJILRmX/59lUmRo ifK/n/yHwoBHMeOzCKMtHOqnO7G2y3hML/+D5W9//9uxUKJnykdVERQWly8rv20zEW5XrqzN nD45AI0sLQWqF3zdePlfDuHmDnblA4acOhfRrhSBB629oLY5AOQB24hRzFHacA7uMJeedDM/ g/Z9z8OLWw/2IB5WU5x5Z/P8mzvYXl9wXsqIH5bHVFcsrEPtalq1kqXJuuPBpJZmTEcJN0d6 zWDrSx7mK9KyMBXjuO0+lfIhz/qrZ/MJuLU2uk1djL0hu+aTNT9D2BN1bQ9xageRGp+Zgfa1 EXoY+DEsIgz4WilzURhutklErCz/OqiOzbBm1NpFJRJ323zpiDyINEMu2olexYB3iM4ldnBM B+7VeR5tM87AZdWRfIfj3+ZUJl1kfC7SbwJqNiNN4MSOPCdizNrDAk3PRLKt4wcuEcrlq47N P+mnTWEXB4n5VBc5GPuHY81iOd1rghnnD+7bc2lknyPjOXGDFbIGO9tGAbfNYgRsfLUyC2Lq Yo3H5XRkH13DrauChQ7BKZJcjjm21BgVc6owyGWH8bfSjdb9JYJUaCLn+x5JdI690mX/8+Rl kyAtoZj4AKXrRX6xc+iMBiPsZvjAsRyq2wVJyspMQr60nQve9f946IWdp9xdr4irbQxwflxR vgDWsOBHvUfEmSdq2pBNcHw/N54aRCmpQOSJC76MjUyephXQQaWqNLpew3Y8jYDU3isvswkr rz8jQ7WGMJRRwlrAMvMRuioyle94SoUlO5oDhnHJ9BSfAPn940zc379ifo+IsctLxTfx2vCh 1zGX0tA/eSU+t076tjEg6yAvryFKeomExoIBXTf4Ja3KTLeoTiuzIpGZ+CCImLQWWbyz6O9P LkHwvz5NsoHq1ZEqY9LFbhmkPAl7Nz1qr4GlwlpESmZb1mvDb88cHCK0dMV7f9Iz75d/BSsA weBpoAcNrKON8foVlUWIVN9POiE0PgVnBjU7Og0cBqmvn4ppOLfXBUAJQSIhQxcMKBxbNEvz 9AntZNE8Ae4kBcrbouLg3wG7WiKNXBcAawruotAW93ugwsvj05YONnSVnaw75aIZNFBdEItJ 2bM1qbFgr1dwGvEcmYyRSeRh7sD3cxWtUAY1kIGKnSIhsHB2q090ipX/GllVQ9S1BhGj79+N 2UD25eZ/klSE+qERfSvXlxA3ylEDRydv1Prkh4HyDSfQE6vWWjAamY6PI5hOazfH310JlBmE HOwkQ4JkgoGuOn+2yIzXQhurPmLoRlZ6FjZgM7+dyiaN8BSXNcm65NCoUIHrhLmBYU6g0ivS SyGOgpvQfWTCBP8aJHXx2VXOXr8hfxEyKF/rSldwZ40
  • Ironport-hdrordr: A9a23:the+Q6gxTA4qEcYCMF892xIoEXBQX6N13DAbv31ZSRFFG/Gwv9 ulnfQF2RKxoCt5YgBgpTlaAtjBfZqyz+8J3WB6B9uftTfdyR6Vxe1ZnPPfK9OJIVyxygZyvZ 0QOJSWIueARWSTFa3BkUaF++9J+qjKzEhD7d2uhUuFNDsaJp2IkT0JcDpzY3cGPzWuXqBJYO vq2iMvnVPJEh55AKTLZQhmLpH+Trvw5eLbiDE9dmgaAWK1/EKVAdDBYmSlN9QlIldyKHUZgA 34esDCl8KeW8/Q8G6u64aq1eUopPLRjv1ZBMKNjcARbhjJoj2DIL9sUbuYsVkO0aKSATsR/e Ukai1QWfia4BnqDxOIiCqo5AHk0Dsn9n/lzhuSkRLY0LLEre0BavZptMZfdF/Q8EAgvM5xuZ g7ll6kiw==
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: ochsLpaD/qKAgN2RkUSsvJL4VQ/lMzxhinSQYU61ofkNugFE4qkkmVaQYkAF+Ud/ds3A6BwRqU vzeIg1ivPIOaEMkVrPz0Gn0djPi9s97hxvitO11Q+vEnZExK+LKlZENjr3TARM/9F0vaYFiDbD VCZJROBmzqsjJqa93YUwpM1tS6PAMb13Z2E2kClnKMZtvln4TGE2PdoOBUNzgEYR/cB7XoWJGR 2gTx2l2iqPKgpOehqQgBChbQ2IQySSNzPDMYJqeJ6BQJmazVPTnMwaUJt2kTgs40Hn5qZSLCcs owAPd52gDKD4reX3S1NN0LsS

On 7/1/22 08:45, Johnny Bigert ( via cgal-discuss Mailing List) wrote:
Hi Sebastien,

Thank you for the link and the swift response, it was very helpful. I was trying to read up on CDTs, but the description is a bit abstract. Would you care to explain a few things about the linked example?

1. In simple words, what does a CDT do? I guess it incrementally
creates a triangulation as we repeatedly call
cdt.insert_constraint(start, end)?

Constraints endpoints are inserted and the triangulation is made Delaunay. Then some edge flips are done to force the constraints
to be in the triangulation (there is a theorem that proves that it
is always possible in 2D)/

2. I got the impression from Wikipedia
(https://en.wikipedia.org/wiki/Constrained_Delaunay_triangulation
<https://en.wikipedia.org/wiki/Constrained_Delaunay_triangulation>)
that a CDT tries to keep the constrained edges (they mention an
example with "breaklines along rivers")? But in the linked example,
we use insert_constraint on /all/ the edges of the mesh, and keeping
all edges makes no sense, so I must be missing something :)
It is indeed too much work but since we don't know the edges that are on the silhouette that is a brute-force way to get them. Also note that in
case of intersection of constraints, edges will be split.

3. In the linked example, what does the cdt.is_constrained(e) call do
exactly? It can't give us back the insert_constraint-inserted edges
(although the name seems to suggest it). So I guess it gives us the
outer borders?

is_constrained() returns whether an edge present in the triangulation
has been constrained by the user (or the initial edge if it has been split).

4. If cdt.is_constrained(e) gives us the outer borders, then why do we
iterate over faces, look at neighbors etc, why not iterate over
edges directly?

To get the silhouette, you need to start from the infinite vertex and collect all the constrained edges that can be reached without crossing
a constrained edge. It is the first iteration of this example:
https://doc.cgal.org/latest/Triangulation_2/Triangulation_2_2polygon_triangulation_8cpp-example.html

If you want to get internal silhouette (like if you input mesh is a torus) then you'll need another method.

HTH

Sebastien



Thank you.

    Best regards, Johnny

On Thu, Jun 30, 2022 at 2:18 PM Sebastien Loriot < <>> wrote:

Hi,

this thread talks about this topic:

https://github.com/CGAL/cgal/discussions/6472
<https://github.com/CGAL/cgal/discussions/6472>

Sebastien.

On 6/30/22 12:51, Johnny Bigert (
<> via cgal-discuss
Mailing List) wrote:
> Hi,
>
> I would like to kindly ask for ideas regarding a problem I'm
trying to
> solve.
>
> I have a triangulated shape as a Polyhedron_3 with exact
constructions.
> The shape is closed and simple and may contain holes.
>
> What I would like to calculate is most easily described like this
(and
> takes an input parameter z): if we cut away parts of the shape
from Z =
> minus infinity to Z = z, what would the shadow (projection) of
the shape
> look like if we shine a flashlight from above, from Z = plus
infinity.
>
> The result will consist of multiple polygons since the shadow
might have
> disjoint areas (e.g. candelabra) and holes (e.g. drinking glass).
>
> Do you have any ideas how to implement this efficiently? Sweep line
> algorithms? Ray casting? Thanks!
>
>       Best regards, Johnny
>
>
>
> --
> You are currently subscribed to cgal-discuss.
> To unsubscribe or access the archives, go to
> https://sympa.inria.fr/sympa/info/cgal-discuss
<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
<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