Dyna_point - ObjectVision/GeoDMS GitHub Wiki
Geometric functions dyna_point

- dyna_point(startpoint, endpoint, distance)
- dyna_point_with_ends(startpoint, endpoint, distance)
- dyna_point(startpoint, endpoint, distance) results in a new domain unit, with three generated [[subitems|subitem] (see description) :
- Point: the generated point data items
- Sequence_rel: the relation between each point and it's segment.
- Ordinal: the order of the points in each segment.
The dyna_point function results in a set of entries with the points generated by the dyna_point function.
Points are generated at segments, configured by the startpoint and nextpoint data items. In the figure above, the light green lines are the segments, and the dark green dots are the dyna_points.
The distance between the points is configured with the distance parameter or literal.
The dyna_point_with_ends functions like the dyna_point function, only the end coordinates are always added to the resulting attributes.
Four related operators interpolate along the same segments; they differ in what they generate and whether the segment end nodes are always included:
- dyna_point(startpoint, endpoint, distance) - generate evenly spaced points along each segment.
- dyna_point_with_ends(startpoint, endpoint, distance) - as dyna_point, but the start and end node of each segment are always added.
-
dyna_segment(startpoint, endpoint, distance) - generate evenly spaced sub-segments (a
Pointand aNextPointper entry) along each segment; the result has one row less than dyna_point. See dyna_segment. - dyna_segment_with_ends(startpoint, endpoint, distance) - as dyna_segment, but the start and end node of each segment are always added. See dyna_segment.
All four share the same arguments and conditions described below. The _with_ends variants only differ in that the original end coordinates are always present in the result.
- startpoint and endpoint data items with fpoint or dpoint value type
- literal or parameter dist with float32 or float64 value type
The domain unit and values unit of the startpoint and endpoint arguments must match.
O(n + r) where n = number of input segments and r = total number of generated points. Number of output points depends on segment lengths and distance parameter.
unit<uint32> CalcPoint := dyna_point(startpoint, endpoint, 5f);
| startpoint | endpoint |
|---|---|
| {13732, 371391} | {13738, 371384} |
| {13738, 371384} | {13746, 371378} |
| {13746, 371378} | {13758, 371369} |
| {13758, 371369} | {13764, 371364} |
| {13764, 371364} | {13768, 371360} |
domain Segment, nr of rows = 5
| point | Sequence_rel | Ordinal |
|---|---|---|
| {13732, 371391} | 0 | 0 |
| {13735.3, 371387} | 0 | 1 |
| {13738.6, 371384} | 1 | 0 |
| {13742.6, 371381} | 1 | 1 |
| {13742.6, 371378} | 2 | 0 |
| {13746.6, 371375} | 2 | 1 |
| {13754.6, 371372} | 2 | 2 |
| {13758.6, 371369} | 3 | 0 |
| {13762.4, 371365} | 3 | 1 |
| {13766.1, 371362} | 4 | 0 |
domain CalcPoint, nr of rows = 10