lissajous_offset¶
- sofia_redux.scan.simulation.scan_patterns.lissajous.lissajous_offset(width, height, t_interval, ratio=1.4142135623730951, delta=<Quantity 1.57079633 rad>, n_oscillations=20, oscillation_period=<Quantity 10. s>, constant_speed=False)[source]¶
Create a Lissajous scan pattern in offset coordinates.
The two-dimensions Lissajous pattern is of the following form:
x = width.sin(a + delta) y = height.sin(b + delta) a = 2.pi.t/oscillation_period b = 2.pi.ratio.t/oscillation_period
The distance between samples (speed) is maximal at the origin and minimal near the edges of the box, which also means the map is under-sampled near the center. An approximation of the pattern using a constant speed for all samples can be achieved by setting
constant_speed
toTrue
.- Parameters:
- widthunits.Quantity
The angular spatial width of the scan.
- heightunits.Quantity
The angular spatial height of the scan.
- t_intervalunits.Quantity
The time interval between sampling points.
- ratiofloat, optional
Determines the number of “lobes” in the lissajous curves relating to width/height. For example 5/4 produces a curve with 5 lobes in the x-direction, and 4 in the y-direction. Irrational numbers result in perfect coverage over a long time span.
- deltaunits.Quantity, optional
The angular value giving the apparent rotation as if viewed from a third axis. Any non-zero value results in curve rotated to the left-right or up-down depending on
ratio
.- n_oscillationsint or float, optional
The number of curve oscillations.
- oscillation_periodunits.Quantity, optional
The time for the curve to complete a single oscillation. Note that the scan length (time) will be
n_oscillations
*oscillation_period
.- constant_speedbool, optional
If
True
, return a pattern where the speed between each sample point is equal.
- Returns:
- patternCoordinate2D
The elevation/cross-elevation scan pattern sampled at
t_interval
.