[pstricks] conceptual question for pst-optexp
Christoph Bersch
usenet at bersch.net
Wed May 28 13:30:15 CEST 2008
Hi,
I have a question regarding the design of new components for pst-optexp.
Currently there are transmittive objects (e.g. lenses)
\lens(A)(B){L}
and reflective objects (e.g. mirrors).
\mirror(A)(G)(B){M}
In both cases all used nodes have to be defined by the user.
Now I am planning to provide new objects with multiple internal
reflections. That means that I have to define new nodes inside the
object and make them accessible for the user in order to draw the beam.
To illustrate the problem a bit, consider the following example:
\documentclass{article}
\usepackage{pst-node}
\SpecialCoor
\makeatletter
\def\pentaprism{%
\edef\@pp at size{2\space}%
\pscustom{%
\psline(! \@pp at size 2 sqrt div 0)%
(! \@pp at size 2 sqrt div 67.5 cos \@pp at size
mul 67.5 sin div sub \@pp at size)%
(! 67.5 cos \@pp at size mul 67.5 sin div
\@pp at size 2 sqrt div sub \@pp at size)%
(! \@pp at size 2 sqrt div neg 0)%
(! 0 \@pp at size 2 sqrt div neg)%
\closepath
}%
\pnode(! \@pp at size 2 sqrt div 67.5 cos \@pp at size mul
67.5 sin 2 mul div sub \@pp at size 2 div){PentaPrism1}%
\pnode(! 67.5 cos \@pp at size mul 67.5 sin 2 mul div
\@pp at size 2 sqrt div sub \@pp at size 2 div){PentaPrism2}%
}%
\makeatother
\begin{document}
\begin{pspicture}[showgrid=true](5,5)
\rput[lb]{-45}(3,3){\pentaprism}
\pnode(0,0){origin}
\psline[linecolor=green](origin|PentaPrism1)%
(PentaPrism1)%
(PentaPrism2)%
(PentaPrism2|origin)
\end{pspicture}
\end{document}
Here, the nodes 'PentaPrism1' and 'PentaPrism2' must be created within
the object definition but the user must be able to access them.
I was thinking about defining a new key 'compname' which takes a name
for the component and which is used as prefix for the internal nodes:
\pentaprism[compname=PP](A)(G)(B){prism}
would then create two nodes e.g. 'PPInput' and 'PPOutput' which can be
accessed by the user lateron.
Do you think this is a good way to implement it or are there better ways?
Thank you for reading this long message :-)
and for your suggestions
Christoph
More information about the PSTricks
mailing list