function Lissajous(omega, N) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % function Lissajous(omega, N) % ....................................................... Rosales, Nov. 2000. % % Plots Lissajous figure x = sin(t), y = sin(omega*t), for % % 0 <= t <= 2*pi*N. N is optional (default N = 5) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if nargin < 2; N = 5; end if nargin == 0; omega = sqrt(2); end % % --- Set up figure window. % SSz = get(0, 'ScreenSize'); SWt = SSz(3);% ---------- Screen Width SHt = SSz(4);% ---------- Screen Height Sml = min(SWt, SHt);% --- Screen minimum length. Fwh = 0.65; % ---------- Fig. Width = Height; as fraction of SmL. POS = [0.02*SWt, 0.94*SHt-Fwh*Sml, Fwh*Sml, Fwh*Sml]; figure; set(gcf, 'Name', ' Lissajous figures.', ... 'NumberTitle', 'off', ... 'Position', POS) whitebg('w') % % --- Set-up axes and labels. % Ticks = -1:0.2:1; TLabl = {'-1', '', '-0.6', '', '-0.2', '', '0.2', '', '0.6', '', '1'}; set(gca, 'FontUnits', 'points', ... 'FontWeight', 'demi', ... 'FontSize', 16, ... 'LineWidth', 2, ... 'Position', [0.14 0.12 0.75 0.75], ... 'Box', 'on', ... 'Xtick', Ticks, ... 'XTickLabel', TLabl, ... 'Ytick', Ticks, ... 'YTickLabel', TLabl) axis square grid on hold on axis([-1.1 1.1 -1.1 1.1]) % xlabel('{\bf x}', 'FontSize', 22) ylabel('{\bf y }', 'FontSize', 22, 'Rotation', 0) title(['{\bf \omega = ', num2str(omega, '%20.14e'), '}'], 'FontSize', 16) % text(-1.10, 1.32, ... '{\bf Lissajous figure: x(t) = sin t, y(t) = sin \omega t.}', ... 'FontUnits', 'Normalized', 'FontSize', 0.05) % MaxF = max(1, abs(omega)); t = 2*pi*N*(0:1:50*N*MaxF)/(40*N*MaxF); x = sin(t); y = sin(omega*t); plot(x, y, '-b', 'LineWidth', 2) % % --- Dot at origin. % r1 = 0.020; r2 = 0.020; ellipseSZans(0.0, 0.0, r1, r2, 'k', 20, 0) % hold off % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ellipseSZans(x, y, r1, r2, color, N, phi) % @#@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % function ellipseSZans(x, y, r1, r2, color, N, phi) % ....................................................... Rosales, Oct. 1999. % ____________________________________________________________________________ % Places a (filled with color) ellipse of radii r1 and r2, centered at (x, y), % in the current figure. The input variables are: % -- (x, y) ....... center of ellipse. % -- r1 ........... horizontal radius of ellipse. % -- r2 ........... vertical radius of ellipse. % -- color ........ string variable with the color (e.g.: color='r'). % -- N ............ number of points used to draw ellipse boundary. % -- phi .......... phase, to allow rotation of polygon when N is small. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% xx = x + r1*cos(phi+2*pi*(0:N)/N); yy = y + r2*sin(phi+2*pi*(0:N)/N); fill(xx, yy, color); plot(xx, yy, '-', 'Color', color, 'LineWidth', 1) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %% EOF