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 to True.

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.