[pstricks] Calculating curves in PsTricks
Chris Sangwin
sangwinc at for.mat.bham.ac.uk
Wed Jun 27 14:10:36 CEST 2001
Dear all,
If this issue has been previously addressed then I apologize - I cannot
find solution posted on the web.
This is a problem I often encounter and the LaTeX file below is only a
typical example.
I wish to typeset a smooth curve using
\pscurve...
To use this I need to calculate a list of co-ordinates
\pscurve(x_1,y_1)(x_2,y_2)...
Typically I might have a complicated curve that needs many such points. I
often typeset mathematical diagrams and need to *calculate* this list of
points - using something like the fp package. This is what I've done
below. I believe this sort of calculated typesetting of diagrams is very
much in the spirit of PST.
I'd like LaTeX to perform the calculations (rather than generating a list
of points with external C code and importing them) to keep the file self
contained. I don't find the speed of the fp package too slow.
How do I connect the dots in the example below with a smooth curve (which
in this example happens to be an ellipse - but that would be cheating as
this is only an example of a more general problem!)
I would be very grateful for any suggestions.
Please note - if you've not used the multido and fp packages together
before you'll need to read the fp documentation first before it will
work...
Regards
Dr C. J. Sangwin
----------------------------------------------
School of Mathematics and Statistics
University of Birmingham
Birmingham, B15 2TT
United Kingdom
+44 121 414 6197
----------------------------------------------
\documentclass[11pt]{article}
\usepackage{graphicx} % From LaTeX distribution
\usepackage{pst-all} % From PSTricks
\usepackage{multido} % From PSTricks
\usepackage[nomessages]{fp}
\begin{document}
\def\Xpsz{6}
\def\Ypsz{6}
\newcommand{\PerCalc}[2]{%
\def\ix{#1}\def\iy{#2}%
\FPeval\iY{\Ypsz * \iy / (\iy + 1.0)} % calculates Y-coodinate
\FPeval\iX{(\Ypsz - \iY)* \ix / \Xpsz} % calculates X-coodinate
}% end perspective calculate
\pspicture(-6,0)(6,6)
\multido{\I=-6+1}{13}{\psline(0,6)(\I,0)}
% The horizontal perspective grid
\multido{\R=0.0+1.0}{13}{%
\PerCalc{-6.0}{\R}
\FPmul\iXX\iX{-1.0} % Exploits symmetry
\psline(\iXX,\iY)(\iX,\iY)
} % end of the horizontal grid
% some dots - I WANT TO CONNECT THESE!!!
\multido{\Rx=0.0+1.0}{90}{%
\FPeval\Ry{ (\Rx * \Rx) / 30.0 } % Defines the quadratic
\PerCalc{\Rx}{\Ry}
\FPmul\iXX\iX{-1.0} % Exploits symmetry - so we'll have to loose this...
\psdots(\iX,\iY)(\iXX,\iY)
}
\endpspicture
\end{document}
More information about the PSTricks
mailing list