%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%% %% pst-osci.doc --- Documentation for `pst-osci' PSTricks package %% %% Authors : Manuel LUQUE %% Christophe JORSSEN %% Created : Thu 2 Sept 1999 %% Last mod. by : Christophe JORSSEN %% Last mod. the : Wed 17 Nov 1999 %% Last mod. by : Herbert Voss %% Last mod. the : Wed 7 Nov 2005 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{article} \usepackage{pstricks,pst-osci,multicol} % PSTricks package for Oscilloscope screen shots \usepackage[baw,pstricks]{fvrb-ex} % Example environments with `fancyvrb' \usepackage[a4paper,left=1.5cm,right=1.5cm,top=1.5cm,bottom=1.5cm]{geometry} \usepackage{fancyhdr} % Modifications in `fvrb-ex' to use only 7 bits characters as escape ones % * will be for comment in place of £, and /() for commands in place of §µ¶ % (this work here because these four characters are not used in the examples) \makeatletter \renewcommand{\Begin@Example}{% \parindent=0pt \multiply\topsep by 2 \VerbatimEnvironment \begin{VerbatimOut}[codes={\catcode`\*=12\catcode`\/=12\catcode`\(=12% \catcode`\)=12}]{\jobname.tmp}} \renewcommand{\Below@Example}[1]{% \VerbatimInput[gobble=0,commentchar=*,commandchars=/(),numbersep=3pt]% {\jobname.tmp} \catcode`\*=9\relax% \NoHighlight@Attributes % To suppress possible highlighting \ifFvrbEx@Grid\vspace{5pt}\fi #1% \ifFvrbEx@Grid\vspace{5pt}\fi \par} \renewcommand{\SideBySide@Example}[1]{% \@tempdimb=\FV@XRightMargin \advance\@tempdimb -5mm \begin{minipage}[c]{\@tempdimb} \fvset{xrightmargin=0pt} \catcode`\*=9\relax% \NoHighlight@Attributes % To suppress possible highlighting #1 \end{minipage}% \@tempdimb=\textwidth \advance\@tempdimb -\FV@XRightMargin \advance\@tempdimb 5mm \begin{minipage}[c]{\@tempdimb} \VerbatimInput[gobble=0,commentchar=*,commandchars=/(),numbersep=3pt, xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} \end{minipage}} % The \NoHighlight@Attributes from `hbaw' and `hcolors' packages % must be modified too \def\NoHighlight@Attributes{% \catcode`\/=0\relax% \catcode`\(=1\relax% \catcode`\)=2\relax% \def\HLa##1{##1}% \def\HLb##1{##1}% \def\HLc##1{##1}% \def\HLd##1{##1}% \def\HLe##1{##1}% \def\HLf##1{##1}% \def\HLBFa##1{##1}% \def\HLBFb##1{##1}% \def\HLBFc##1{##1}% \def\HLBFd##1{##1}% \def\HLBFe##1{##1}% \def\HLBFf##1{##1}% \def\HLITa##1{##1}% \def\HLITb##1{##1}% \def\HLITc##1{##1}% \def\HLITd##1{##1}% \def\HLITe##1{##1}% \def\HLITf##1{##1}% \def\HLCBBa##1{##1}% \def\HLCBBb##1{##1}% \def\HLCBBc##1{##1}% \def\HLCBBd##1{##1}% \def\HLCBBe##1{##1}% \def\HLCBBf##1{##1}% \def\HLCBBz##1{##1}% \def\HLCBWa##1{##1}% \def\HLCBWb##1{##1}% \def\HLCBWc##1{##1}% \def\HLCBWd##1{##1}% \def\HLCBWe##1{##1}% \def\HLCBWf##1{##1}% \def\HLCBWz##1{##1}% } \makeatother % Example environments with numbers, single frame, label on top and margin \fvset{numbers=none,frame=single,labelposition=topline} % For macro names \DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} \newcommand{\OsciPackage}{\textbf{`pst-osci'}} \let\phi\varphi \lhead{\OsciPackage}\rhead{A PSTricks package for oscilloscopes} \pagestyle{fancy} \begin{document} \title{\OsciPackage\thanks{Thanks to Denis \textsc{Girou} for his most valuable help and his encouragements.}\\ A PSTricks package for oscilloscopes} \author{\shortstack{\makeatletter Manuel \textsc{Luque} \texttt{}\\ Christophe \textsc{Jorssen} \texttt{}\makeatother}} \date{\shortstack{Version 2.82\\ \small Documentation revised November 07, 2005 by hv}} \maketitle \begin{center} \psframebox[framearc=0.3,framesep=5mm,linewidth=0.7mm]{% \parbox{15cm}{% {\Large\textbf{Abstract}}: \OsciPackage{} is a PSTricks package to draw easily oscilloscope screen shots. Three channels can be used to represent the most common signals (damped or not): namely sinusoidal ($y=A\exp (-\lambda t)\sin (\frac{2\pi}{T}t+m\cdot\sin(\frac{2\pi}{T_m}t)+\phi) + c$), rectangular, triangular, dog's tooth (left and right oriented). The third channel allows you to add, to subtract or to multiply the two other signals. \textsc{Lissajous} diagrams (XY-mode) can also be obtained.}} \end{center} \setlength{\columnseprule}{0.6pt} \begin{multicols}{2} {\parskip 0pt \tableofcontents} \end{multicols} \section{Introduction} \OsciPackage{} offers a unique macro with few parameters to interact on it (it is the same approach as in Denis \textsc{Girou}'s \textbf{`pst-poly'} package). \par The syntax is simply: \fbox{\cs{Oscillo}\texttt{[optional\_parameters]}}. \par \textbf{As for a real oscilloscope, it is important to choose the correct sensivity for each channel in relation to the amplitude of the signal. If you did the wrong choice, you will get bad-looking curves.} \par The style of the curves can be customized using the standard PSTricks parameters. \section{Usage} \subsection{Parameters} There are thirty specific parameters defined to change the way the screen shots are drawn. \par Henceforth, the signals represented on channels A, B and C will be called `SignalA', `SignalB' and `SignalC'. \begin{description} \item[\HLTTc{period1} (real):] period $T_1$ (in ms) of SignalA (\emph{default:~20}). \item[\HLTTc{period2} (real):] period $T_2$ (in ms) of SignalB (\emph{default:~20}). \item[\HLTTc{amplitude1} (real):] amplitude $A_1$ (in V) of SignalA (\emph{default:~2}). \item[\HLTTc{amplitude2} (real):] amplitude $A_2$ (in V) of SignalB (\emph{default:~0 -- no signal}). \item[\HLTTc{periodmodulation1} (real):] period $T_{m1}$ (in ms) of SignalA (\emph{default:~100}). \item[\HLTTc{periodmodulation2} (real):] period $T_{m2}$ (in ms) of SignalB (\emph{default:~100}). \item[\HLTTc{freqmod1} (real):] modulation factor $m_1$ of SignalA (\emph{default:~0}). \item[\HLTTc{freqmod2} (real):] modulation factor $m_2$ of SignalB (\emph{default:~0}). \item[\HLTTc{phase1} (real):] phase $\phi_1$ (in deg) of SignalA (\emph{default:~0}). \item[\HLTTc{phase2} (real):] phase $\phi_2$ (in deg) of SignalB (\emph{default:~0}). \item[\HLTTc{CC1} (real):] continuous component $c_1$ (in V) of SignalA (\emph{default:~0}). \item[\HLTTc{CC2} (real):] continuous component $c_2$ (in V) of SignalB (\emph{default:~0}). \item[\HLTTc{damping1} (real):] damping $\lambda_1$ of SignalA (\emph{default:~0 -- no damping}). \item[\HLTTc{damping2} (real):] damping $\lambda_2$ of SignalB (\emph{default:~0 -- no damping}). \item[\HLTTc{wave1}:] type of the SignalA chosen between \cs{SinusA}, \cs{RectangleA}, \cs{TriangleA}, \cs{LDogToothA}, \cs{RDogToothA} (\emph{default: \cs{SinusA}}). \item[\HLTTc{wave2}:] type of the SignalB chosen between \cs{SinusB}, \cs{RectangleB}, \cs{TriangleB}, \cs{LDogToothB}, \cs{RDogToothB} (\emph{default: \cs{SinusB}}). \item[\HLTTc{timediv} (real):] scale (in ms) of the time axis (\emph{default:~5}). \item[\HLTTc{Lissajous} (boolean):] switch to XY-mode (true) or not (false) (\emph{default: false}). \item[\HLTTc{sensivity1} (real):] scale (in V) of the channel A vertical axis (\emph{default:~1}). \item[\HLTTc{sensivity2} (real):] scale (in V) of the channel B vertical axis (\emph{default:~1}). \item[\HLTTc{plotstyle1}:] determines what kind of plot you will get for channel A (\emph{default: GreenContA}). Note that you can customize the plotstyle using the \cs{newpsstyle} macro (see below for examples). \item[\HLTTc{plotstyle2}:] determines what kind of plot you will get for channel B (\emph{default: BlueContB}). Same remark as above. \item[\HLTTc{plotstyle3}:] determines what kind of plot you will get for XY-mode (\emph{default: RedContLissajous}). Same remark as above. \item[\HLTTc{plotstyle4}:] determines what kind of plot you will get for add, sub or mul operation (third channel) (\emph{default: MagentaContAddSub}). Same remark as above. \item[\HLTTc{combine} (boolean):] if true allows to draw combination of SignalA and SignalB on channel C (namely addition, subtraction or multiplication) (\emph{default: false -- no signal}). See next item. \item[\HLTTc{operation}:] determines what kind of operation will be applied to SignalA and SignalB to get SignalC. The valid parameters are add, sub and mul (\emph{default: \cs{relax} -- no operation}). \item[\HLTTc{Fourier} (integer):] see below (Section \ref{Rectangular}) (\emph{default:~100}). \item[\HLTTc{offset1} (real):] offset $c'_1$ (in V) of SignalA (\emph{default:~0}). \item[\HLTTc{offset2} (real):] offset $c'_2$ (in V) of SignalB (\emph{default:~0}). \item[\HLTTc{offset3} (real):] offset $c'_2$ (in V) of SignalC (\emph{default:~0}). \end{description} \subsection{Rectangular, triangular and dog's tooth signals\label{Rectangular}} The parameter \HLTTc{Fourier} controls the precision of the Fourier transform used to draw rectangular, triangular and dog's tooth signals. The number of terms is fixed to 100 by default in order to minimize the computation time. But you can give \HLTTc{Fourier} any value you want. \par Note that those signals can also be damped using the \HLTTc{damping1} and \HLTTc{damping2} parameters. By default, there is no damping ($\lambda=1$). \subsection{\OsciPackage{} and \LaTeX} \OsciPackage{} defines colors that may interact with the \textbf{`color'} package. You should then use the \textbf{`pst-col'} package and load \OsciPackage{} this way: \begin{Verbatim} \usepackage{pstcol,pst-osci} \end{Verbatim} \subsection{Reducing the size of the Oscilloscope} The oscilloscope is put inside a 10\,cm square \HLTTc{pspicture} environment. There are two ways to reduce the size of the box, depending on the fonts you use. \subsubsection{Using PostScript fonts} We recommend that solution because it allows you to treat fonts like any other PostScript object. As a matter of fact, you can, for instance, put your \cs{Oscillo} macro inside a PSTricks \cs{psscalebox}. It is very simple and offers good results. However, pay attention to the fact that, if you are using non-PS fonts, the result will look ugly! \subsubsection{Using non-PostScript fonts} If you use non-PS fonts and if you want to reduce the size of the Oscilloscope, you should type something like: \begin{Verbatim} {\psset{unit=0.5}\footnotesize\Oscillo} \end{Verbatim} \section{Examples} \subsection{Basic examples} \begin{CenterExample}[label={The \cs{Oscillo} macro, default parameters}] \psscalebox{0.5}{\Oscillo} \end{CenterExample} \textbf{In order to minimize the size of the file, all the oscilloscopes are drawn scaled $\frac{1}{2}$. This reduced scale is not represented.} \makeatletter \let\Oldpst@Oscillo\pst@Oscillo \def\pst@Oscillo[#1]{\psscalebox{0.5}{\Oldpst@Oscillo[#1]}} \makeatother \par If you only want to see SignalA then set \HLTTc{offset2} in order to have $\HLTTc{offset2}\in ]-\infty,-4\times \HLTTc{sensivity2}[ \cup ]4\times\HLTTc{sensivity2},+\infty[$: \begin{SideBySideExample}[label=SignalB invisible, xrightmargin=5.5cm] \Oscillo[offset2=/HLCBWz(5)] \end{SideBySideExample} Let's have a look at Channel A: \begin{CenterExample}[label=The importance of sensivity] % Extrema invisible \psscalebox{0.5}{\Oscillo[offset2=5,/HLCBWz(amplitude1)=5]} % Good sensivity choice \hfill \psscalebox{0.5}{\Oscillo[offset2=5,amplitude1=5,/HLCBWz(sensivity1)=2]} \end{CenterExample} Now, let's have two signals on Channel A and B. By default, the two signals have the same period and the same phase: \begin{CenterExample} % Different amplitude \psscalebox{0.5}{\Oscillo[amplitude1=3,/HLCBWz(amplitude2)=1.5]} % Different period £\hfill \psscalebox{0.5}{\Oscillo[amplitude1=3,amplitude2=1.5,/HLCBWz(period2)=50]} % Different phase £\hfill \psscalebox{0.5}{\Oscillo[amplitude1=3,amplitude2=1.5,/HLCBWz(phase1)=60,/HLCBWz(phase2)=-30]} \end{CenterExample} \begin{SideBySideExample}[label=Damping and amplification,xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=3,amplitude2=1.5, /HLCBWz(damping2)=0.005,/HLCBWz(damping1)=-0.005]} \end{SideBySideExample} \begin{SideBySideExample}[label=Changing the time scale,xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude2=1.5,/HLCBWz(timediv)=10]} \end{SideBySideExample} \begin{SideBySideExample}[label=Vertical translations,xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1.5,amplitude2=1.5, /HLCBWz(offset1)=1.5,/HLCBWz(offset2)=-1.5]} \end{SideBySideExample} \begin{CenterExample}[label=Changing the plot style] /HLCBWz(\newpsstyle){BlueDots}{plotstyle=dots, linecolor=blue,linewidth=0.02,plotpoints=50} \psscalebox{0.5}{\Oscillo[amplitude1=3,/HLCBWz(plotstyle2)=BlueDots,amplitude2=2]} /HLCBWz(\newpsstyle){GreenDash}{linestyle=dashed, linecolor=green,linewidth=0.035,plotpoints=50} £\hfill \psscalebox{0.5}{\Oscillo[amplitude1=2,phase1=90,amplitude2=3.8,period1=25, period2=50,phase2=10,/HLCBWz(plotstyle1)=GreenDash]} \end{CenterExample} \subsection{Channel C: operations} Note that \HLTTc{offset1} and \HLTTc{offset2} are \textbf{not} taken into account in the operations when the \HLTTc{combine} parameter is set to true. \begin{CenterExample}[label=Additions] \psscalebox{0.5}{\Oscillo[amplitude2=1.5,period2=50,period1=10, /HLCBWz(combine)=/HLCBWz(true),/HLCBWz(operation)=/HLCBWz(add)]} £\hfill \psscalebox{0.5}{\Oscillo[amplitude2=1.5,period2=50,period1=10, /HLCBWz(combine)=/HLCBWz(true),/HLCBWz(operation)=/HLCBWz(add),offset1=2,offset2=2]} £\hfill % SignalA and SignalB are invisible \psscalebox{0.5}{\Oscillo[amplitude2=1.5,period2=50,period1=10, /HLCBWz(combine)=/HLCBWz(true),/HLCBWz(operation)=/HLCBWz(add),offset1=6,offset2=6]} \end{CenterExample} \begin{SideBySideExample}[label=Subtraction,xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude2=1.5,period2=50,period1=10, /HLCBWz(combine)=/HLCBWz(true), /HLCBWz(operation)=/HLCBWz(sub)]} \end{SideBySideExample} \begin{CenterExample}[label=Multiplications] \psscalebox{0.5}{\Oscillo[amplitude2=1.5,period2=50,period1=10, /HLCBWz(combine)=/HLCBWz(true),/HLCBWz(operation)=/HLCBWz(mul)]} £\hfill \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=2, period2=50,period1=2,/HLCBWz(combine)=/HLCBWz(true),/HLCBWz(operation)=/HLCBWz(mul)]} \end{CenterExample} \subsection{Channel C: XY-mode} \begin{SideBySideExample}[label={Basic \textsc{Lissajous} curve},xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[/HLCBWz(Lissajous)=/HLCBWz(true),amplitude2=2]} \end{SideBySideExample} \begin{CenterExample} \psscalebox{0.5}{\Oscillo[Lissajous=true,amplitude2=3,phase2=45]} \hfill \psscalebox{0.5}{\Oscillo[Lissajous=true,amplitude2=2,phase2=90]} \end{CenterExample} \begin{CenterExample} \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90,amplitude2=3.5, period1=20,period2=10,phase2=0,Lissajous=true]} \hfill \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90,amplitude2=3.5, period1=25,period2=5,phase2=60,Lissajous=true]} \end{CenterExample} \begin{SideBySideExample}[label={A damped \textsc{Lissajous} diagram},xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90, amplitude2=3.5,period1=50,period2=50, Lissajous=true,damping1=0.01,damping2=0.01]} \end{SideBySideExample} \subsection{Non sinusoidal signals} \begin{CenterExample}[label=Exponential signals] \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90, period1=/HLCBWz(2E30),offset2=5,damping1=0.02]} \hfill \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90, period1=/HLCBWz(2E30),offset2=3,amplitude2=-3,damping1=0.02, period2=/HLCBWz(2E31),damping2=0.02,phase2=90]} \end{CenterExample} \textbf{Note:} the maximum value for \HLTTc{period1} and \HLTTc{period2} is $\pm$2E31. \begin{CenterExample}[label={Non-sinusoidal signals}] \psscalebox{0.5}{\Oscillo[/HLCBWz(Wave1)=/HLCBWz(\TriangleA),amplitude2=2,period2=20,period1=25]} \hfill \psscalebox{0.5}{\Oscillo[/HLCBWz(Wave1)=/HLCBWz(\RectangleA),amplitude2=2,period2=20,period1=25]} \end{CenterExample} \begin{CenterExample}[label=Combine examples] \psscalebox{0.5}{\Oscillo[Wave2=\TriangleB,combine=true,operation=mul,amplitude2=2, period2=50,period1=2,amplitude1=1]} \hfill \psscalebox{0.5}{\Oscillo[combine=true,operation=add,amplitude2=1.5, Wave1=\RectangleA,amplitude1=1.5,period2=15]} \hfill \psscalebox{0.5}{\Oscillo[combine=true,operation=add,amplitude2=1.5, Wave1=\RectangleA,amplitude1=1.5,period2=15,Wave2=\TriangleB]} \end{CenterExample} \begin{CenterExample}[label={Dog's tooth signal}] \psscalebox{0.5}{\Oscillo[combine=true,operation=mul,amplitude2=1.5, /HLCBWz(Wave1)=/HLCBWz(\RDogToothA),amplitude1=1.5,period2=15]} £\hfill \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90,amplitude2=3.5, period1=25,period2=6.25,phase2=0,Lissajous=true,Wave2=\RDogToothB]} \end{CenterExample} \subsection{Frequency modulation examples} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[/HLCBWz(periodmodulation1)=200,/HLCBWz(freqmod1)=5, period1=30, timediv=50,plotpoints=1000,amplitude2=2,period2=200]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1, period2=25,period1=2,combine=true,operation=mul]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1,/HLCBWz(CC2)=2, period2=25,period1=2,combine=true,operation=mul,offset1=5]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1,CC2=1.5, Wave2=\TriangleB, period2=25,period1=2,combine=true,operation=mul,offset1=5]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1,CC2=2, Wave2=\RDogToothB, period2=25,period1=2,combine=true,operation=mul,offset1=5]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1,CC2=-2, Wave2=\LDogToothB, period2=20,period1=3,combine=true,operation=mul,offset1=5]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1,CC2=2, Wave2=\RDogToothB, period2=25,period1=2,combine=true,operation=mul, offset1=5,offset3=-1]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=1,amplitude2=1,CC2=-2, Wave2=\LDogToothB, period2=20,period1=3,combine=true,operation=mul, offset1=5,offset3=1]} \end{SideBySideExample} \subsection{More examples} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90,amplitude2=3.5, period1=50, period2=50,phase2=0,Lissajous=true,damping1=0.01, Wave2=\RectangleB]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=2,amplitude2=1.8, Wave1=\RectangleA, Fourier=500,period1=25,period2=12.5,combine=true, operation=add,Wave2=\RectangleB]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=4,amplitude2=3, period1=50, period2=5,Lissajous=true,Wave1=\RectangleA]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=3,phase1=90, amplitude2=3,damping1=0.05, period1=25,period2=12.5,phase2=0, Lissajous=true,Wave2=\RDogToothB]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=4,amplitude2=3,period1=25, period2=50,Lissajous=true,damping1=0.02, Wave2=\TriangleB]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[Wave2=\LDogToothB,combine=true, operation=mul, amplitude2=2,period2=50,period1=2,amplitude1=1]} \end{SideBySideExample} \begin{SideBySideExample}[xrightmargin=5.5cm] \psscalebox{0.5}{\Oscillo[amplitude1=3.5,phase1=90,% amplitude2=3.5,period1=50, period2=50,phase2=0,Lissajous=true,damping1=0.01, Wave2=\RectangleB,damping2=0.01]} \end{SideBySideExample} \end{document}