DotOffset
>Psychtoolbox>PsychOneliners
[dx,dy,dz,a,e] = DotOffset(r,d,ndots)
computes DX, DY and DZ offsets to move a point in a direction specified
by R. Output for NDOTS offsets are computed independently. Only azimuthal
direction can be specified or both azimuth and elevation, in which case a
number of different randomizations are possible (see third form of R
below). D is the distance by with dots are to be offset and should be
either scalar or have length NDOTS.
all angles are in degrees
Outputs A and E are the azimuth and elevation angles used by DotOffset
for each offset. If only one output is requested, a 3xNDOTS output matrix
with the x, y and z offset on the respective rows is returned.
R can take four forms:
- scalar: direction (in degrees) of offset in azimuth (0 is translation
in z direction, 90 in x direction towards 3 o’clock), used for all
outputted offsets - vector with length NDOTS: direction (in degrees) of offset in azimuth
specified in input for each outputted offset - a matrix of size NDOTSx2: direction (in degrees) of offset in azimuth
(first column) and elevation (second column) specified in input for
each outputted offset - 2x2 cellmatrix: the first row specifies azimuth direction, the second
the elevation angle. A number of different inputs for the azimuth and
the elevation row are possible and lead to the following outputs:- first column is a vector with length NDOTS: direction (in degrees) of
offset specified for each outputted offset. Second column is ignored. - first column is a vector with length other than NDOTS: for each
outputted offset, offset direction is randomly selected from the
values in the vector (see ‘help RandSel’). Second column is ignored. - scalar in the first column and NaN in the second column (e.g.
{45,NaN;67,NaN} or {45,90;67,NaN}). Direction specified in the first
column is used for all outputted offsets. - scalar in the first and second column (both non-NaN)) (e.g.
{45,90;67,NaN} or {45,90;0,360}). For each offset, a random direction
is chosen within the specified limits. Angles are randomly chosen
between lower (1st column) and upper (2nd column) boundaries (see
‘help RandLim’).
- first column is a vector with length NDOTS: direction (in degrees) of
Function can also be used to compute points laying on (part of) a Circle
or sphere with radius D:
[X,~,Z] = DotOffset(linspace(0,360),D,100);
Psychtoolbox/PsychOneliners/DotOffset.m