Calculates the axes of the laser footprint on the target using a trigonometric approach.
The aim of preCalcFootprint is to calculate the laser footprint area.
Using either existing normal and beam vectors (odm-attributes) or getting them on-the-fly, the ellipse can be calculated either as points with attributes (area, semimajor axis, ...) or as a polygon approximating the shape. Output can either be an odm or a shape file.
The intersection area of a laser beam with the tangent plane of a target surface is commonly referred to as laser footprint. It's size depends on the range (sensor-to-target distance), the beam divergence (i.e. opening angle of the laser beam) and the incidence angle between the beam and the surface. The latter is calculated based on the laser beam direction and the surface normal vector.
Output can be either points or polygons, and either opals Datamanager (odm) or ESRI Shapefile (.shp). Different attributes can be selected for string by using the {-a, –attribute} parameter. In case of angles of incidence close to 90°, resulting ellipses will not be exact. To skip those automatically, the {–m, –max_incidence} parameter can be used.
The script uses a trigonometric approach to calculate the semimajor and semiminor axes of the theoretical elliptic footprint of the laser beam. In the next step, coordinates for points on this ellipse are calculated, with the ellipse in standard form and the points spaced apart {–pointspacing} degrees (eccentric anomaly). These points are then transformed into their position on the tangent plane.
possible input | comment |
---|---|
s, a, v, e, s, , t, h, e, , a, r, e, a, , o, f, , t, h, e, , f, o, o, t, p, r, i, n, t, , a, s, , a, t, t, r, i, b, u, t, e, , [, i, n, , s, q, ., m, ., ] | area |
s, a, v, e, s, , t, h, e, , s, e, m, i, m, a, j, o, r, , a, x, i, s, , [, i, n, , m, ] | semimajor |
s, a, v, e, s, , t, h, e, , s, e, m, i, m, i, n, o, r, , a, x, i, s, , [, i, n, , m, ] | semiminor |
s, a, v, e, s, , b, o, t, h, , a, x, e, s, , [, i, n, , m, ] | axes |
s, a, v, e, s, , t, h, e, , a, n, g, l, e, , o, f, , i, n, c, i, d, e, n, c, e, , [, i, n, , r, a, d, ] | incidence |
s, a, v, e, s, , t, h, e, , i, d, , o, f, , t, h, e, , o, r, i, g, i, n, a, t, i, n, g, , p, o, i, n, t | pointid |
s, a, v, e, s, , t, h, e, , X, /, Y, /, Z, , c, o, m, p, o, n, e, n, t, s, , o, f, , t, h, e, , b, e, a, m, , v, e, c, t, o, r | beamvector |
s, a, v, e, s, , t, h, e, , X, /, Y, /, Z, , c, o, m, p, o, n, e, n, t, s, , o, f, , t, h, e, , n, o, r, m, a, l, , v, e, c, t, o, r | normalvector |
possible input | evaluates to |
---|---|
point | point |
polygon | polygon |
The data used in the following examples can be found in the $OPALS_ROOT/demo/
directory.
As a prerequisite for the subsequent examples, please import the data using the following command:
Calculate ellipse area and axes, store them in a polygon shapefile. Beam- and normal vectors are assumed as attributes.
Calculate beam vectors "on-the-fly", and save the result in an odm as points (with attributes)
Write polygon information back to the original odm. Beam vectors are, again, assumed. The polygons will have the origninating point id and the three components of the beam vector as attributes.