Offsets in periodic triangulations

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Offsets in periodic triangulations

GAD FLY
Hi everyone!

As a beginner I got stuck when reading the documentation on the periodic triangulations! 
My question is about the "Offset" vector, the documentation says "It represents the number of periods a representative in the original domain must be translated in x- and y-direction". Could someone explain this vector in an example maybe?
I wanted to visualize my periodic triangulation structure, but I do not know how to deal with the edges between an original point and a periodic copy. 

Thanks,
James
Reply | Threaded
Open this post in threaded view
|

Re: Offsets in periodic triangulations

MaelRL

Hello,

An illustration of the offsets is given this figure in the Periodic_3_triangulation_3 documentation. The offset vector (or just simply offset) expresses a translation: a periodic domain is an axis-aligned cuboid that by definition repeats itself in the x, y and z directions and thus forms a tiling of the space. If we arbitrarily choose a tile and name it the main tile, we can number all the other tiles via 3 numbers, the amount of steps we have to do in the x, y, and z direction to reach that tile from the main tile. That's the offset.

What is important to understand is that points of a periodic triangulation all live in the same cube (the one with offset (0,0,0), also known as fundamental or canonical domain). Offsets are then used to indicate relative positions within an element of the periodic triangulation.

For example, in 3D and using the unit cube as fundamental domain, the cell composed of the points:

(0.7, 0.9, 1.1)
(0.8, 0.8, 0.9)
(0.9, 1.2, 0.9)
(1.0, 0.9, 1.1)

is going to be represented as

(0.7, 0.9, 0.1) with offset (0,0,1)
(0.8, 0.8, 0.9) with offset (0,0,0)
(0.9, 0.2, 0.9) with offset (0,1,0)
(0.0, 0.9, 0.1) with offset (1,0,1)

Thus, when you drawing your triangulation, you should iterate over its elements and take into account the offsets to compute the positions you have to draw in full space (this is basically reading the example above from the bottom up). Whichever dimension you are in, there are functions to obtain a position in Euclidean space from a vertex within an element (e.g. periodic_point()). There are also functions to save and output periodic triangulations, which you can inspire yourself with if they're not satisfactory for you.

Best,
Mael

On 20/07/2018 01:42, GAD FLY wrote:
Hi everyone!

As a beginner I got stuck when reading the documentation on the periodic triangulations! 
My question is about the "Offset" vector, the documentation says "It represents the number of periods a representative in the original domain must be translated in x- and y-direction". Could someone explain this vector in an example maybe?
I wanted to visualize my periodic triangulation structure, but I do not know how to deal with the edges between an original point and a periodic copy. 

Thanks,
James

Reply | Threaded
Open this post in threaded view
|

Re: Offsets in periodic triangulations

GAD FLY
Thank you Mael for your detailed explanation.
However, when for example a periodic point (xp,yp) in 2D has offset of (2,0), to find its position should we try (xp + 2*L , yp) where L is the box size?

Best,
James


On Friday, July 20, 2018 3:42 AM, Mael <[hidden email]> wrote:


Hello,
An illustration of the offsets is given this figure in the Periodic_3_triangulation_3 documentation. The offset vector (or just simply offset) expresses a translation: a periodic domain is an axis-aligned cuboid that by definition repeats itself in the x, y and z directions and thus forms a tiling of the space. If we arbitrarily choose a tile and name it the main tile, we can number all the other tiles via 3 numbers, the amount of steps we have to do in the x, y, and z direction to reach that tile from the main tile. That's the offset.
What is important to understand is that points of a periodic triangulation all live in the same cube (the one with offset (0,0,0), also known as fundamental or canonical domain). Offsets are then used to indicate relative positions within an element of the periodic triangulation.
For example, in 3D and using the unit cube as fundamental domain, the cell composed of the points:
(0.7, 0.9, 1.1)
(0.8, 0.8, 0.9)
(0.9, 1.2, 0.9)
(1.0, 0.9, 1.1)
is going to be represented as
(0.7, 0.9, 0.1) with offset (0,0,1)
(0.8, 0.8, 0.9) with offset (0,0,0)
(0.9, 0.2, 0.9) with offset (0,1,0)
(0.0, 0.9, 0.1) with offset (1,0,1)
Thus, when you drawing your triangulation, you should iterate over its elements and take into account the offsets to compute the positions you have to draw in full space (this is basically reading the example above from the bottom up). Whichever dimension you are in, there are functions to obtain a position in Euclidean space from a vertex within an element (e.g. periodic_point()). There are also functions to save and output periodic triangulations, which you can inspire yourself with if they're not satisfactory for you.

Best,
Mael

On 20/07/2018 01:42, GAD FLY wrote:
Hi everyone!

As a beginner I got stuck when reading the documentation on the periodic triangulations! 
My question is about the "Offset" vector, the documentation says "It represents the number of periods a representative in the original domain must be translated in x- and y-direction". Could someone explain this vector in an example maybe?
I wanted to visualize my periodic triangulation structure, but I do not know how to deal with the edges between an original point and a periodic copy. 

Thanks,
James



Reply | Threaded
Open this post in threaded view
|

Re: Offsets in periodic triangulations

GAD FLY
It seems the answer would be (xp - L, yp)?


On Tuesday, July 24, 2018 9:52 AM, GAD FLY <[hidden email]> wrote:


Thank you Mael for your detailed explanation.
However, when for example a periodic point (xp,yp) in 2D has offset of (2,0), to find its position should we try (xp + 2*L , yp) where L is the box size?

Best,
James


On Friday, July 20, 2018 3:42 AM, Mael <[hidden email]> wrote:


Hello,
An illustration of the offsets is given this figure in the Periodic_3_triangulation_3 documentation. The offset vector (or just simply offset) expresses a translation: a periodic domain is an axis-aligned cuboid that by definition repeats itself in the x, y and z directions and thus forms a tiling of the space. If we arbitrarily choose a tile and name it the main tile, we can number all the other tiles via 3 numbers, the amount of steps we have to do in the x, y, and z direction to reach that tile from the main tile. That's the offset.
What is important to understand is that points of a periodic triangulation all live in the same cube (the one with offset (0,0,0), also known as fundamental or canonical domain). Offsets are then used to indicate relative positions within an element of the periodic triangulation.
For example, in 3D and using the unit cube as fundamental domain, the cell composed of the points:
(0.7, 0.9, 1.1)
(0.8, 0.8, 0.9)
(0.9, 1.2, 0.9)
(1.0, 0.9, 1.1)
is going to be represented as
(0.7, 0.9, 0.1) with offset (0,0,1)
(0.8, 0.8, 0.9) with offset (0,0,0)
(0.9, 0.2, 0.9) with offset (0,1,0)
(0.0, 0.9, 0.1) with offset (1,0,1)
Thus, when you drawing your triangulation, you should iterate over its elements and take into account the offsets to compute the positions you have to draw in full space (this is basically reading the example above from the bottom up). Whichever dimension you are in, there are functions to obtain a position in Euclidean space from a vertex within an element (e.g. periodic_point()). There are also functions to save and output periodic triangulations, which you can inspire yourself with if they're not satisfactory for you.

Best,
Mael

On 20/07/2018 01:42, GAD FLY wrote:
Hi everyone!

As a beginner I got stuck when reading the documentation on the periodic triangulations! 
My question is about the "Offset" vector, the documentation says "It represents the number of periods a representative in the original domain must be translated in x- and y-direction". Could someone explain this vector in an example maybe?
I wanted to visualize my periodic triangulation structure, but I do not know how to deal with the edges between an original point and a periodic copy. 

Thanks,
James





Reply | Threaded
Open this post in threaded view
|

Re: Offsets in periodic triangulations

MaelRL

Hello,

It depends what you mean by "position" :

- If you mean you want to compute the canonical position because you have a point in R^2, you can compute its offset and then you'll have to subtract the offset to get the canonical position.

- If you mean you want to compute the "real world" R^2 position because you have a canonical position (for example that of a vertex, obtained through v->point()) and you have a given offset, then you'll add the offset.

I guess you mean the second case.

If you are not interested in the offset per se but just in the general position of points in R^2 to draw the triangulation, you don't need to bother with these offset computations: the function "P2T2::point()" (which I have just noticed is mistakenly not documented) can be used. Given a face 'f' and the index 'i' of the vertex in the face, you can call p2t2.point(f, i) and it'll give you a position in R^2 based on the offset of the point in the face. Thus,

p2t2.point(f, 0),
p2t2.point(f, 1),
p2t2.point(f, 2)

will give you a geometrically correct face in R^2 (and thus you can draw your segments crossing the canonical cube borders correctly).

Best,
Mael



On 24/07/2018 18:00, GAD FLY wrote:
It seems the answer would be (xp - L, yp)?


On Tuesday, July 24, 2018 9:52 AM, GAD FLY [hidden email] wrote:


Thank you Mael for your detailed explanation.
However, when for example a periodic point (xp,yp) in 2D has offset of (2,0), to find its position should we try (xp + 2*L , yp) where L is the box size?

Best,
James


On Friday, July 20, 2018 3:42 AM, Mael [hidden email] wrote:


Hello,
An illustration of the offsets is given this figure in the Periodic_3_triangulation_3 documentation. The offset vector (or just simply offset) expresses a translation: a periodic domain is an axis-aligned cuboid that by definition repeats itself in the x, y and z directions and thus forms a tiling of the space. If we arbitrarily choose a tile and name it the main tile, we can number all the other tiles via 3 numbers, the amount of steps we have to do in the x, y, and z direction to reach that tile from the main tile. That's the offset.
What is important to understand is that points of a periodic triangulation all live in the same cube (the one with offset (0,0,0), also known as fundamental or canonical domain). Offsets are then used to indicate relative positions within an element of the periodic triangulation.
For example, in 3D and using the unit cube as fundamental domain, the cell composed of the points:
(0.7, 0.9, 1.1)
(0.8, 0.8, 0.9)
(0.9, 1.2, 0.9)
(1.0, 0.9, 1.1)
is going to be represented as
(0.7, 0.9, 0.1) with offset (0,0,1)
(0.8, 0.8, 0.9) with offset (0,0,0)
(0.9, 0.2, 0.9) with offset (0,1,0)
(0.0, 0.9, 0.1) with offset (1,0,1)
Thus, when you drawing your triangulation, you should iterate over its elements and take into account the offsets to compute the positions you have to draw in full space (this is basically reading the example above from the bottom up). Whichever dimension you are in, there are functions to obtain a position in Euclidean space from a vertex within an element (e.g. periodic_point()). There are also functions to save and output periodic triangulations, which you can inspire yourself with if they're not satisfactory for you.

Best,
Mael

On 20/07/2018 01:42, GAD FLY wrote:
Hi everyone!

As a beginner I got stuck when reading the documentation on the periodic triangulations! 
My question is about the "Offset" vector, the documentation says "It represents the number of periods a representative in the original domain must be translated in x- and y-direction". Could someone explain this vector in an example maybe?
I wanted to visualize my periodic triangulation structure, but I do not know how to deal with the edges between an original point and a periodic copy. 

Thanks,
James