Skip to main content
Add "over paths" explanations.
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20

Over paths are made by combining direct paths end points and apices in sets of two edges.
1. A Mesh Line with two edges sharing one central vertex is duplicated as many times as the number of direct paths. Start Location and Offset parameters are irrelevant, as vertices position will be set afterwards. It is to notice that the Duplicate Elements node is set in Instance domain. This way, duplicated edges remain connected. Whereas in Edge domain, this connection is lost as two vertices are created at the junction. So the three vertices of copy number $i$ are with indexes $3i$, $3i+1$ and $3i+2$.
2. Through a Realize Instances node, instances are made independent sets of edges. Subsequent Set position nodes are thus in Point domain.
3. Point H is copied as the first vertex of the $i^\mathrm{th}$ copy.
3.1. Its index matches the selection mask $3i$.
3.2. Point H position is recovered with a Sample Index node set in Edge domain, looking for the $i^\mathrm{th}$ direct path. As point H was recorded at second position by the DirectPath node group, its coordinates are provided by the socket Position 2 of the connected Edge Vertices node.
4. The apex (labelled T) is copied as the second vertex of the $i^\mathrm{th}$ copy.
4.1. Its index matches the selection mask $3i+1$.
4.2. Point T position is recovered with a Sample Index node set in Point domain, looking for the $i^\mathrm{th}$ apex.
5. Point A is copied as the third and last vertex of the $i^\mathrm{th}$ copy.
5.1. Its index matches the selection mask $3i+2$.
5.2. Its position is recovered as for point H, but from the socket Position 1.
6. The normal to the plane defined by (H,T,A) is computed as $\vec{TA} \wedge \vec{HT}$. It is stored in an attribute named normal, to be used to rotate the Bezier curves handles.

1. .
2. .
3. .

Over paths are made by combining direct paths end points and apices in sets of two edges.
1. A Mesh Line with two edges sharing one central vertex is duplicated as many times as the number of direct paths. Start Location and Offset parameters are irrelevant, as vertices position will be set afterwards. It is to notice that the Duplicate Elements node is set in Instance domain. This way, duplicated edges remain connected. Whereas in Edge domain, this connection is lost as two vertices are created at the junction. So the three vertices of copy number $i$ are with indexes $3i$, $3i+1$ and $3i+2$.
2. Through a Realize Instances node, instances are made independent sets of edges. Subsequent Set position nodes are thus in Point domain.
3. Point H is copied as the first vertex of the $i^\mathrm{th}$ copy.
3.1. Its index matches the selection mask $3i$.
3.2. Point H position is recovered with a Sample Index node set in Edge domain, looking for the $i^\mathrm{th}$ direct path. As point H was recorded at second position by the DirectPath node group, its coordinates are provided by the socket Position 2 of the connected Edge Vertices node.
4. The apex (labelled T) is copied as the second vertex of the $i^\mathrm{th}$ copy.
4.1. Its index matches the selection mask $3i+1$.
4.2. Point T position is recovered with a Sample Index node set in Point domain, looking for the $i^\mathrm{th}$ apex.
5. Point A is copied as the third and last vertex of the $i^\mathrm{th}$ copy.
5.1. Its index matches the selection mask $3i+2$.
5.2. Its position is recovered as for point H, but from the socket Position 1.
6. The normal to the plane defined by (H,T,A) is computed as $\vec{TA} \wedge \vec{HT}$. It is stored in an attribute named normal, to be used to rotate the Bezier curves handles.

Update figures.
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20

GN Main graph, controls and resultsGN Main graph, controls and results

GN Direct paths graphGN Direct paths graph

GN Apex graphGN Apex graph

GN complete paths graphGN complete paths graph

GN Main graph, controls and results

GN Direct paths graph

GN Apex graph

GN complete paths graph

GN Main graph, controls and results

GN Direct paths graph

GN Apex graph

GN complete paths graph

Add explanations (apex computation).
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20

GN Apex graphGN Apex graph

Apex is the highest point of a flightpath.
1. A point per direct path edge is created using a Mesh to Points node set in Edges domain. The procedure to compute its position follows. These points are collected in a Point Cloud. It is to notice that an edge and the associated point are sharing the same Index, but in different domains.
2. The mid-point position of an edge [AH] (labelled I) is computed from its two end vertices, which position is recovered with an Edge Vertices node.
3. The perpendicular bisector of [AH] is computed by subtracting the sphere centre position (labelled C) to the mid-point I position, because points A and H are laying on the sphere. So $\vec{CI}$ is perpendicular to $\vec{AH}$.
4. This vector is normalized to be scaled afterwards by the apex height. This height is a function of the length of the circular arc connecting A and H. Let $\Delta \theta$ be the angle between $\vec{CI}$ and $\vec{CH}$, and $R$ the sphere radius. The length of this arc is then $2 R \Delta \theta$.
5. $\Delta \theta$ is such that $\cos{(\Delta \theta)} = \|\vec{CI}\|/R$.
6. The distance between point C and the apex is defined as $(\kappa \Delta \theta + 1) \times R$. The $\kappa$ parameter is user-defined, and its value is recovered through the Group Input node. For $\kappa=0$, the apex is on the sphere ; for $\kappa=2$, the apex height is equal to the distance between A and H along the sphere.
7. The apex position is defined from point C, by adding the vector computed at step 4. So by construction, points C, A, H and the apex are coplanar.

Build and adjust flight pathsflightpaths

GN Apex graph

1. .
2. .
3. .

Build and adjust flight paths

GN Apex graph

Apex is the highest point of a flightpath.
1. A point per direct path edge is created using a Mesh to Points node set in Edges domain. The procedure to compute its position follows. These points are collected in a Point Cloud. It is to notice that an edge and the associated point are sharing the same Index, but in different domains.
2. The mid-point position of an edge [AH] (labelled I) is computed from its two end vertices, which position is recovered with an Edge Vertices node.
3. The perpendicular bisector of [AH] is computed by subtracting the sphere centre position (labelled C) to the mid-point I position, because points A and H are laying on the sphere. So $\vec{CI}$ is perpendicular to $\vec{AH}$.
4. This vector is normalized to be scaled afterwards by the apex height. This height is a function of the length of the circular arc connecting A and H. Let $\Delta \theta$ be the angle between $\vec{CI}$ and $\vec{CH}$, and $R$ the sphere radius. The length of this arc is then $2 R \Delta \theta$.
5. $\Delta \theta$ is such that $\cos{(\Delta \theta)} = \|\vec{CI}\|/R$.
6. The distance between point C and the apex is defined as $(\kappa \Delta \theta + 1) \times R$. The $\kappa$ parameter is user-defined, and its value is recovered through the Group Input node. For $\kappa=0$, the apex is on the sphere ; for $\kappa=2$, the apex height is equal to the distance between A and H along the sphere.
7. The apex position is defined from point C, by adding the vector computed at step 4. So by construction, points C, A, H and the apex are coplanar.

Build and adjust flightpaths

Add explanations.
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20
Loading
Approach documented.
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20
Loading
Add GN screenshots.
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20
Loading
Source Link
StefLAncien
  • 6.7k
  • 5
  • 20
Loading