summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-10-20 20:57:52 +0000
committerKarl Berry <karl@freefriends.org>2019-10-20 20:57:52 +0000
commiteae6041fbc51527923fdca5ad56e362572fbe940 (patch)
treecb88961c87432a13ad3505983b922f63b5a6a69f /Master/texmf-dist/doc
parent5ab5adbe90601f0d4b513e15f6d16b9129ed26a1 (diff)
pst-eucl (20oct19)
git-svn-id: svn://tug.org/texlive/trunk@52457 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/generic/pst-eucl/Changes13
-rw-r--r--Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdfbin543319 -> 1189759 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex2288
3 files changed, 2190 insertions, 111 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-eucl/Changes b/Master/texmf-dist/doc/generic/pst-eucl/Changes
index 70509f1f1b4..f05be18cb40 100644
--- a/Master/texmf-dist/doc/generic/pst-eucl/Changes
+++ b/Master/texmf-dist/doc/generic/pst-eucl/Changes
@@ -1,10 +1,15 @@
pst-eucl.pro --------
-1.01 2012/09/21 - fix for introduced bug
-1.00 2011/08/05 - fix bug in /InterLines
+1.01 2012/09/21 - fix for introduced bug
+1.00 2011/08/05 - fix bug in /InterLines
pst-eucl.tex --------
-
+1.66 2019/10/20 - add macros to operate the node coordinates, \pstAbscissa, \pstOrdinate, \pstMoveNode etc.
+ - add optional parameters angleA and angleB for \pstCircleOA and \pstCircleAB.
+ - add optional parameters to output the inner circle center and outer circle center for \pstTriangleIC and \pstTriangleOC.
+ - add macros to draw the tangent line and tangent node of circle.
+ - add macros to draw the external and internal common tangent lines of two circles.
+ - add macros to draw conics (ellipse, parabola and hyperbola) and their geometrical elements, such as focus, directrix and intersections.
1.65 2019/08/19 - new type for angle
1.64 2019/01/31 - fix for PointName and pstInterCC
1.63 2019/01/27 - fix for PointSymbol=none for pstTriangle
@@ -43,7 +48,7 @@ pst-eucl.tex --------
1.36 2010/08/23 - fix for \pstMarkAngle (hv)
1.35 2009/01/19 - new option labelColor (hv)
1.34 2006/01/28 - use \psscalebox instead of \scalebox
- - small tweaks
+ - small tweaks
%% 2000-10-16 : creation of the file from a first LaTeX protype sty file
%% 2001-05-7 : distribution of the first beta version
%% 2002-03-21 : distribution of the second beta version
diff --git a/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf b/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf
index f1a31520f17..7f37a4e7ae7 100644
--- a/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf
+++ b/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex b/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex
index e81b7cf8d52..25aefc74877 100644
--- a/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex
+++ b/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex
@@ -4,6 +4,8 @@
\usepackage{pst-eucl}
\let\pstEuclideFV\fileversion
\usepackage{multicol}
+\usepackage{ntheorem}
+\newtheorem{theorem}{Theorem}
\usepackage{pst-plot,paralist}
\usepackage[mathscr]{eucal}
\lstset{pos=l,wide=false,language=PSTricks,
@@ -42,7 +44,7 @@
\item Michael Vulis for his fast testing of the documentation using
V\TeX\ which leads to the correction of a bug in the \PS\ code;
\item Manuel Luque and Olivier Reboux for their remarks and their examples.
- \item Alain Delplanque for its modification propositions on automatic
+ \item Alain Delplanque for its modification theorems on automatic
placing of points name and the ability of giving a list of points in
\Lcs{pstGeonode}.
\end{compactitem}
@@ -51,9 +53,10 @@
\vfill
\noindent
-Thanks to:
+Thanks to:
Manuel Luque;
-Thomas Söll.
+Thomas Söll;
+Liao Xiongfei.
@@ -195,19 +198,61 @@ Obviously, the nodes appearing in the picture can be used as normal
\rnode{ici}{here}.
\nccurve[arrowscale=2]{->}{ici}{B_1}
+After v1.65, we add macros \Lcs{pstAbscissa} and \Lcs{pstOrdinate} to
+get the abscissa and ordinate of the specified node, so it is possible
+to define a new node from an already constructed node with them.
+
+\begin{BDef}
+\Lcs{pstAbscissa}\Largb{A}\\
+\Lcs{pstOrdinate}\Largb{A}
+\end{BDef}
+
+Note that the value of abscissa or ordinate are transformed to the \texttt{User coordinate},
+and then put into the stack of \PS, so they can be used to do some compound arithmetic
+without concerned the \texttt{xunit} and \texttt{yunit} in the \PST{} \texttt{SpecialCoor}
+function. You need the other third package to do float arithmetic operation,
+like \Lcs{pscalculate} \footnote{Provided by package \texttt{pst-calculate},
+sometimes it results the numbers more than 9 fraction digits,
+which are not supported good by \PST\space with '! number too big' issue.} to generate the numerical values,
+or the expandable command \Lcs{fpeval}\footnote{Provided by package \texttt{xfp},
+it can truncate the fraction part digits using the \texttt{trunc} function perfectly,
+e.g. \texttt{\textbackslash{}fpeval\{trunc(18/7,3)\}}.} to get a purely numerical result,
+
+The macro \Lcs{pstMoveNode} use them to move node $A$ by abscissa increment $dx$
+and ordinate increment $dy$ to get the target node $B$.
+
+\begin{BDef}
+\Lcs{pstMoveNode}\OptArgs($dx$,\kern 1pt$dy$)\Largb{$A$}\Largb{$B$}
+\end{BDef}
+
+for example:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\def\ra{3.0}\def\rb{4.0}
+\pstGeonode[PosAngle=-90](1.0,1.5){A}
+\pstGeonode[PosAngle=90](! \pstAbscissa{A} 1 add \pstOrdinate{A} 2 add){B}
+\pstLineAB[linecolor=blue]{A}{B}
+\pstMoveNode[PosAngle=-90,PointSymbol=asterisk](3,2){A}{C}
+\pstLineAB[linecolor=red]{A}{C}
+\pstMoveNode[PosAngle=-90,PointSymbol=diamond](\pscalculate{sqrt(\ra*\ra+\rb*\rb)/2},\pscalculate{\ra*\rb/(2*(\ra+\rb))}){A}{D}
+\pstLineAB[linecolor=cyan]{A}{D}
+\pstMoveNode[PosAngle=-90](\pstAbscissa{B} 3 div,\pstOrdinate{B} neg 3 div){D}{E}
+\pstLineAB[linecolor=green]{A}{E}
+\end{pspicture}
+\end{LTXexample}
+
%\subsubsection{User defined axes}
-\Lcs{pstOIJGeonode} creates a list of points in the landmark $(O;I;J)$. Possible
+\Lcs{pstOIJGeonode} creates a list of points in the landmark $(O;I;J)$. Possible
parameters are \Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PosAngle},
- \Lkeyword{PointSymbol}, and \Lkeyword{PtNameMath}.
+\Lkeyword{PointSymbol}, and \Lkeyword{PtNameMath}.
+
\begin{BDef}
\Lcs{pstOIJGeonode}\OptArgs\coord1\Largb{$A_1$}\Largb{$O$}\Largb{$I$}\Largb{$J$}
\coord2\Largb{$A_2$}\ldots\cAny\Largb{$A_n$}
\end{BDef}
-\clearpage
-
-
\begin{LTXexample}[width=5.6cm,pos=l]
\psset{unit=.7}
\begin{pspicture*}[showgrid=true](-4,-4)(4,4)
@@ -268,7 +313,7 @@ Several commands are predefined for marking the segment:
The three commands of the family \Lkeyval{MarkHash} draw a line whose inclination is
controled by the parameter \Lkeyword{MarkAngle} (default is 45). Their width and colour
-depends of the width and color of the line when the drawing is done, ass shown is the
+depends of the width and color of the line when the drawing is done, as shown is the
next example.
@@ -277,12 +322,12 @@ next example.
\begin{pspicture}[showgrid=true](-2,-2)(2,2)
\rput{18}{%
\pstGeonode[PosAngle={0,90,180,-90}](2,0){A}(2;72){B}
- (2;144){C}(2;216){D}(2;288){E}}
- \pstSegmentMark{A}{B}
+ (2;144){C}(2;216){D}(2;288){E}}
+ \pstSegmentMark[SegmentSymbol=none]{A}{B}
\pstSegmentMark[linecolor=green]{B}{C}
\psset{linewidth=2\pslinewidth}
\pstSegmentMark[linewidth=2\pslinewidth]{C}{D}
- \pstSegmentMark{D}{E}
+ \pstSegmentMark[MarkAngle=90]{D}{E}
\pstSegmentMark{E}{A}
\end{pspicture}
\end{LTXexample}
@@ -294,18 +339,16 @@ The length and the separation of multiple hases can be set by \Lkeyword{MarkHash
\subsection{Triangles}
-The more classical figure, it has its own macro for a quick definition:
+The more classical figure, it has its own macro \Lcs{pstTriangle} for a quick definition:
\begin{BDef}
-\Lcs{pstTriangle}\OptArgs\coord1\Largb{A}\coord2\Largb{B}\coord3\Largb{C}\\
-\Lcs{pstTriangleIC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\\
-\Lcs{pstTriangleOC}\OptArgs\Largb{A}\Largb{B}\Largb{C}
+\Lcs{pstTriangle}\OptArgs\coord1\Largb{A}\coord2\Largb{B}\coord3\Largb{C}
\end{BDef}
\begin{sloppypar}
Valid optional arguments are \Lkeyword{PointName},
- \Lkeyword{PointNameSep}, %\Lkeyword{PosAngle},
+ \Lkeyword{PointNameSep}, %\Lkeyword{PosAngle},
\Lkeyword{PointSymbol}, \Lkeyword{PointNameA},
\Lkeyword{PosAngleA}, \Lkeyword{PointSymbolA}, \Lkeyword{PointNameB},
\Lkeyword{PosAngleB}, \Lkeyword{PointSymbolB}, \Lkeyword{PointNameC},
@@ -326,6 +369,14 @@ for each points: \Lkeyword{PointSymbolA}, \Lkeyword{PointSymbolB} and
\Lkeyword{PointSymbol}. The management of the default value followed the
same rule.
+The macros \Lcs{pstTriangleIC} and \Lcs{pstTriangleOC} are used to draw the inner circle
+and outer circle of triangle $ABC$.
+
+\begin{BDef}
+\Lcs{pstTriangleIC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\OptArg{I}\OptArg{H}\\
+\Lcs{pstTriangleOC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\OptArg{O}
+\end{BDef}
+
\begin{LTXexample}[width=5cm,pos=l]
\begin{pspicture}[showgrid](-2,-2)(2,2)
\pstTriangle[PointSymbol=square,PointSymbolC=o,
@@ -336,9 +387,19 @@ same rule.
\end{pspicture}
\end{LTXexample}
-The center of the inner circle is called \verb|IC_O| and the outer circle \verb|OC_O|. They are
-only defined, if the macros \Lcs{pstTriangleIC} and \Lcs{pstTriangleOC} are used.
+The center of the inner circle is called \verb|IC_O| as default and the outer circle \verb|OC_O| as default,
+but you can change the node names by the optional parameters \OptArg{I} \OptArg{H} and \OptArg{O}.
+The optional node name $H$ is a node on the inner circle,
+so you can operate the inner circle by center $I$ and node $H$ later.
+The inner center $I$, node $H$ and outer circle center $O$ are not printed out as default,
+but you can setup \Lkeyword{PointSymbol} and \Lkeyword{PointName} to display them.
+For example:
+
+\begin{lstlisting}
+\pstTriangleIC[PosAngle={-90,160},PointName={I,none},PointSymbol={*,none}]{A}{B}{C}[I][D]
+\pstTriangleOC[PosAngle=90,PointSymbol=*,PointName=X]{A}{B}{C}[X]
+\end{lstlisting}
\subsection{Angles}
@@ -379,7 +440,7 @@ For other angles, there is the command:
\begin{sloppypar}
-Valid optional arguments are \Lkeyword{MarkAngleRadius}, \Lkeyword{LabelAngleOffset},
+Valid optional arguments are \Lkeyword{MarkAngleRadius}, \Lkeyword{LabelAngleOffset},
\Lkeyword{MarkAngleType} and
\Lkeyword{Mark}
%
@@ -415,18 +476,18 @@ the angle by specifying a \TeX{} command as argument of parameter \Lkeyword{Mark
\psset{PointSymbol=none,PointNameMathSize=\scriptstyle,PointNameSep=6pt,
RightAngleSize=0.15,PosAngle={135,225,-45,45}}
\pstGeonode(1,2){A}(1,1){B}(2,1){C}(2,2){D}%
-\pstRightAngle[fillstyle=solid,fillcolor=blue!40]{C}{B}{A}
-\pstRightAngle{D}{C}{B} \pstRightAngle{A}{D}{C}
+\pstRightAngle[fillstyle=solid,fillcolor=blue!40]{C}{B}{A}
+\pstRightAngle{D}{C}{B} \pstRightAngle{A}{D}{C}
\pstRightAngle{B}{A}{D} \pspolygon(A)(B)(C)(D)
\psset{RightAngleType=suisseromand}
\pstGeonode(3,2){A}(3,1){B}(4,1){C}(4,2){D}%
-\pstRightAngle[fillstyle=solid,fillcolor=blue!40]{C}{B}{A}
-\pstRightAngle{D}{C}{B} \pstRightAngle{A}{D}{C}
+\pstRightAngle[fillstyle=solid,fillcolor=blue!40]{C}{B}{A}
+\pstRightAngle{D}{C}{B} \pstRightAngle{A}{D}{C}
\pstRightAngle{B}{A}{D} \pspolygon(A)(B)(C)(D)
\psset{RightAngleType=german}
\pstGeonode(5,2){A}(5,1){B}(6,1){C}(6,2){D}%
-\pstRightAngle[fillstyle=solid,fillcolor=blue!40]{C}{B}{A}
-\pstRightAngle{D}{C}{B} \pstRightAngle{A}{D}{C}
+\pstRightAngle[fillstyle=solid,fillcolor=blue!40]{C}{B}{A}
+\pstRightAngle{D}{C}{B} \pstRightAngle{A}{D}{C}
\pstRightAngle{B}{A}{D} \pspolygon(A)(B)(C)(D)
\end{pspicture}
\end{LTXexample}
@@ -469,34 +530,87 @@ parameters is equal to 0.
\begin{LTXexample}[width=5cm,pos=l]
\begin{pspicture}[showgrid](-2,-2)(2,2)
\pstGeonode(1,1){A}(-1,-1){B}
-\pstLineAB[nodesepA=-.4,nodesepB=-1,
+\pstLineAB[nodesepA=-.4,nodesepB=-1,
linecolor=green]{A}{B}
\pstLineAB[nodesep=.4,linecolor=red]{A}{B}
\end{pspicture}
\end{LTXexample}
+The macro \Lcs{pstLine} draws a new line with two nodes, or two coordinates
+or one node and one coordinate. This macro is similar with \Lcs{pstLineAB},
+but more compatible.
+
+\begin{BDef}
+\Lcs{pstLine}\OptArgs\Largb{A}\Largb{B}\\
+\Lcs{pstLine}\OptArgs\Largb{A}\cAny\\
+\Lcs{pstLine}\OptArgs\cAny\Largb{B}\\
+\Lcs{pstLine}\OptArgs\cAny\cAny
+\end{BDef}
+
+The macros \Lcs{pstLineAA} and \Lcs{pstLineAS} draw a new line with one node,
+the slope \texttt{angle} between the line and the horizontal axis, or the
+slope \texttt{gradient} of the line, and create a new node $B$ on the line.
+
+\begin{BDef}
+\Lcs{pstLineAA}\OptArgs\Largb{A}\Largb{angle}\Largb{B}\\
+\Lcs{pstLineAA}\OptArgs\cAny\Largb{angle}\Largb{B}\\
+\Lcs{pstLineAS}\OptArgs\Largb{A}\Largb{gradient}\Largb{B}\\
+\Lcs{pstLineAS}\OptArgs\cAny\Largb{gradient}\Largb{B}
+\end{BDef}
+
+Here are some examples:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\pstGeonode[PosAngle=90](1.5,1.5){A}
+% draw a line with angle atan(2/1), about 63.43 degree.
+\pstLineAA[linecolor=red,nodesep=-0.5,PosAngle=90]{A}{2 1 atan}{B}
+\pstLineAA[linecolor=yellow,nodesep=-0.5,PosAngle=-120]{A}{-45}{C}
+\pstLineAS[linecolor=green,nodesep=-0.5,PosAngle=30]{A}{-0.5}{D}
+% draw a line with gradient (cos50/sin50).
+\pstLineAS[linecolor=cyan,nodesep=-0.5]{A}{50 cos 50 sin div}{E}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstLineAbsNode} creates a new node $C$ whose abscissa
+is the given value $x_1$ on the line $AB$. The macro \Lcs{pstLineOrdNode} creates a new node $C$ whose ordinate is the given value $y_1$ on the line $AB$.
+You can input $x_1$ or $y_1$ as any number(e.g, 2.0),
+or use \Lcs{pscalculate} or \Lcs{fpeval} to get a purely numerical result,
+or use \Lcs{pstAbscissa} and \Lcs{pstOrdinate} to get the abscissa and ordinate of any other node.
+\begin{BDef}
+\Lcs{pstLineAbsNode}\OptArgs\Largb{A}\Largb{B}\Largb{$x_1$}\Largb{C}\\
+\Lcs{pstLineOrdNode}\OptArgs\Largb{A}\Largb{B}\Largb{$y_1$}\Largb{C}
+\end{BDef}
+For example,
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\pstGeonode[PosAngle=-40](0.8,0.5){A}
+\pstGeonode[PosAngle=-40](1.2,1.0){B}
+\pstLineAB[linecolor=red,nodesep=-0.5]{A}{B}
+\pstLineAbsNode[PosAngle=-40,PointSymbol=o]{A}{B}{2.5}{C}
+\pstLineOrdNode[PosAngle=-40,PointSymbol=o]{A}{B}{3.0}{D}
+\pstLineAB[linecolor=blue,nodesep=-0.5]{C}{D}
+\end{pspicture}
+\end{LTXexample}
- \subsection{Circles}
+\subsection{Circles}
A circle can be defined either with its center and a point of its
circumference, or with two diameterly opposed points. There is two
commands :
-
\begin{BDef}
-\Lcs{pstCircleOA}\OptArgs\Largb{O}\Largb{A}\\
-\Lcs{pstCircleAB}\OptArgs\Largb{O}\Largb{A}\\
-\Lcs{pstDistAB}\OptArgs\Largb{A}\Largb{B}\\
-\Lcs{pstDistVal}\OptArgs\Largb{x}
+\Lcs{pstCircleOA}\OptArgs\Largb{O}\Largb{A}\OptArg{angleA}\OptArg{angleB}\\
+\Lcs{pstCircleAB}\OptArgs\Largb{O}\Largb{A}\OptArg{angleA}\OptArg{angleB}
\end{BDef}
-%\Lcs{pstCircleOA} draws the circle of center $O$ crossing $A$. Possible options are \Lkeyword{Radius} and
-% \Lkeyword{Diameter}.
-
-%\Lcs{pstCircleAB} draws the circle of diameter $AB$ with the same options.
+\Lcs{pstCircleOA} draws the circle of center $O$ crossing $A$ from \Lkeyword{angleA} to \Lkeyword{angleB}, going counter clockwise.
+Possible options are \Lkeyword{Radius} and \Lkeyword{Diameter}.
+
+\Lcs{pstCircleAB} draws the circle of diameter $AB$ with the same options.
For the first macro, it is possible to omit the second point and then
@@ -504,12 +618,16 @@ to specify a radius or a diameter using the parameters \Lkeyword{Radius}
and \Lkeyword{Diameter}. The values of these parameters must be specified
with one of the two following macros :
+\begin{BDef}
+\Lcs{pstDistAB}\OptArgs\Largb{A}\Largb{B}\\
+\Lcs{pstDistVal}\OptArgs\Largb{x}
+\end{BDef}
+
%\Lcs{pstDistAB} Specifies distance $AB$ for the parameters
% \Lkeyword{Radius}, \Lkeyword{Diameter} and \Lkeyword{DistCoef}.
-
+%
%\Lcs{pstDistVal} Specifies a numerical value for the parameters
% \Lkeyword{Radius}, \Lkeyword{Diameter}, and \Lkeyword{DistCoef}.
-
The first specifies a distance between two points. The parameter
\Lkeyword{DistCoef} can be used to specify a coefficient to reduce or
@@ -529,40 +647,22 @@ We will see later how to draw the circle crossing three points.
\item {\color{RoyalBlue} the circle whose diameter is $BC$.}
\end{compactitem}
-\enlargethispage{3\normalbaselineskip}
-
-\bigskip
-\begin{pspicture}[showgrid](-4,-3.3)(5,3)
-\psset{linewidth=2\pslinewidth}
-\pstGeonode[PosAngle={0,-135,90},PointSymbol={*,*,square}](1,0){A}(-2,-1){B}(0,1){C}
-\pstCircleOA[linecolor=red]{A}{B}
-\pstCircleOA[linecolor=green, DistCoef=2 3 div, Radius=\pstDistAB{A}{C}]{A}{}
-\pstCircleOA[linecolor=blue, Radius=\pstDistAB{B}{C}]{A}{}
-\pstCircleOA[linecolor=Sepia, Radius=\pstDistAB{A}{C}]{B}{}
-\pstCircleOA[linecolor=Aquamarine, Diameter=\pstDistAB{A}{C}]{B}{}
-\pstCircleAB[linecolor=RoyalBlue]{B}{C}
-\end{pspicture}
-
-
\clearpage
-\begin{lstlisting}
-\begin{pspicture}[showgrid](-4,-4)(5,3)
+\begin{LTXexample}[width=\linewidth,pos=t]
+\begin{pspicture}[showgrid](-4,-3.3)(4,3)
\psset{linewidth=2\pslinewidth}
\pstGeonode[PosAngle={0,-135,90},PointSymbol={*,*,square}](1,0){A}(-2,-1){B}(0,1){C}
\pstCircleOA[linecolor=red]{A}{B}
\pstCircleOA[linecolor=green, DistCoef=2 3 div, Radius=\pstDistAB{A}{C}]{A}{}
-\pstCircleOA[linecolor=blue, Radius=\pstDistAB{B}{C}]{A}{}
+\pstCircleOA[linecolor=blue, Radius=\pstDistAB{B}{C}]{A}{}[45][270]
\pstCircleOA[linecolor=Sepia, Radius=\pstDistAB{A}{C}]{B}{}
-\pstCircleOA[linecolor=Aquamarine, Diameter=\pstDistAB{A}{C}]{B}{}
+\pstCircleOA[linecolor=Aquamarine, Diameter=\pstDistAB{A}{C}]{B}{}[80][320]
\pstCircleAB[linecolor=RoyalBlue]{B}{C}
\end{pspicture}
-\end{lstlisting}
-
-
- \subsection{Circle arcs}
-
+\end{LTXexample}
+\subsection{Circle arcs}
\begin{BDef}
\Lcs{pstArcOAB}\OptArgs\Largb{O}\Largb{A}\Largb{B}\\
@@ -588,11 +688,77 @@ two points are at the same distance of $O$.
\end{pspicture}
\end{LTXexample}
-\subsection{Curved abscissa}
+\subsection{Circle tangent}
-A point can be positioned on a circle using its curved abscissa.
+The macro \Lcs{pstCircleTangentLine} is used to draw a tangent line $AT$ from a point $A$ on the circle,
+and the macro \Lcs{pstCircleTangentNode} is used to draw the tangent points $T_1$ and $T_2$ from a point $P$ out of the circle.
+\begin{BDef}
+\Lcs{pstCircleTangentLine}\OptArgs\Largb{O}\Largb{A}\Largb{T}\\
+\Lcs{pstCircleTangentNode}\OptArgs\Largb{O}\Largb{A}\Largb{P}\Largb{T1}\Largb{T2}
+\end{BDef}
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\psset{nodesep=-0.8}
+\pstGeonode[PosAngle={90,120,-30}](1,1){O}(-1,0){T}(3,0){S}
+\pstCircleOA[Radius=\pstDistVal{1.5},linecolor=red]{O}{}
+\pstCircleRotNode[Radius=\pstDistVal{1.5},PosAngle=-30,RotAngle=-30]{O}{}{A}
+\pstCircleTangentLine[PosAngle=-10,PointName=A_1]{O}{A}{A1}
+\pstCircleRotNode[Radius=\pstDistVal{1.5},PosAngle=90,RotAngle=90]{O}{}{B}
+\pstCircleTangentLine[PosAngle=90,PointName=B_1]{O}{B}{B1}
+\pstCircleTangentNode[Radius=\pstDistVal{1.5},PosAngle={150,90},PointName={T_1,T_2}]{O}{}{T}{T1}{T2}
+\pstCircleTangentNode[PosAngle={80,200},PointName={S_1,S_2}]{O}{A}{S}{S1}{S2}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstCircleExternalCommonTangent} is used to find the external common tangent lines of two circle $A(O_1)$ and $B(O_2)$,
+and the macro \Lcs{pstCircleInternalCommonTangent} is used to find the internal common tangent lines of two circle $A(O_1)$ and $B(O_2)$.
+They both create four tangent point nodes $T_1,T_2,T_3,T_4$, where $T_1,T_2$ lie on circle $A(O_1)$, and $T_3,T_4$ lie on circle $B(O_2)$.
+
+\begin{BDef}
+\Lcs{pstCircleExternalCommonTangent}\OptArgs\Largb{$O_1$}\Largb{A}\Largb{$O_2$}\Largb{B}\Largb{$T_1$}\Largb{$T_2$}\Largb{$T_3$}\Largb{$T_4$}\\
+\Lcs{pstCircleInternalCommonTangent}\OptArgs\Largb{$O_1$}\Largb{A}\Largb{$O_2$}\Largb{B}\Largb{$T_1$}\Largb{$T_2$}\Largb{$T_3$}\Largb{$T_4$}
+\end{BDef}
+
+You can use \Lkeyword{RadiusA} and \Lkeyword{RadiusB} to define the two circles like as following:
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(3,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\pstGeonode[PosAngle=-90](-1,0){O1}
+\pstGeonode[PosAngle=-60](1.5,1.5){O2}
+\pstCircleOA[Radius=\pstDistVal{2},linecolor=red]{O1}{}
+\pstCircleOA[Radius=\pstDistVal{1},linecolor=blue]{O2}{}
+\pstCircleExternalCommonTangent[RadiusA=\pstDistVal{2},RadiusB=\pstDistVal{1},PosAngle={90,-60,90,-60}]{O1}{}{O2}{}{P}{Q}{R}{S}
+\pstLine[nodesep=-1]{P}{R}
+\pstLine[nodesep=-1]{Q}{S}
+\pstCircleInternalCommonTangent[RadiusA=\pstDistVal{2},RadiusB=\pstDistVal{1},PosAngle={120,60,120,60}]{O1}{}{O2}{}{H}{I}{J}{K}
+\pstLine[nodesep=-1]{H}{J}
+\pstLine[nodesep=-1]{I}{K}
+\end{pspicture}
+\end{LTXexample}
+
+You also can use \Lkeyword{DiameterA} and \Lkeyword{DiameterB} to define the two circles like as following:
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(3,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\pstGeonode[PosAngle=-90](-1,0){O1}
+\pstGeonode[PosAngle=-60](1.5,1.5){O2}
+\pstCircleOA[Diameter=\pstDistVal{3},linecolor=red]{O1}{}
+\pstCircleOA[Diameter=\pstDistVal{2},linecolor=blue]{O2}{}
+\pstCircleExternalCommonTangent[DiameterA=\pstDistVal{3},DiameterB=\pstDistVal{2},PosAngle={100,-60,90,-60}]{O1}{}{O2}{}{P}{Q}{R}{S}
+\pstLine[nodesep=-1]{P}{R}
+\pstLine[nodesep=-1]{Q}{S}
+\pstCircleInternalCommonTangent[DiameterA=\pstDistVal{3},DiameterB=\pstDistVal{2},PosAngle={80,-60,-90,140}]{O1}{}{O2}{}{H}{I}{J}{K}
+\pstLine[nodesep=-1]{H}{J}
+\pstLine[nodesep=-1]{I}{K}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Curved abscissa}
+
+A point can be positioned on a circle using its curved abscissa.
\begin{BDef}
@@ -623,6 +789,55 @@ automatically in oirder to be alined with the circle center and the point.
\end{pspicture}
\end{LTXexample}
+
+A point can be positioned on a circle using its absolute abscissa or ordinate too.
+You can input $x_1$ or $y_1$ as any number(e.g, 2.0), or use \Lcs{pscalculate} or \Lcs{fpeval} to generate the value,
+or use \Lcs{pstAbscissa} and \Lcs{pstOrdinate} to get the abscissa and ordinate of any other node.
+
+\begin{BDef}
+\Lcs{pstCircleAbsNode}\OptArgs\Largb{O}\Largb{A}\Largb{$x_1$}\Largb{C}\Largb{C}\\
+\Lcs{pstCircleOrdNode}\OptArgs\Largb{O}\Largb{A}\Largb{$y_1$}\Largb{C}\Largb{C}
+\end{BDef}
+
+for example,
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(4,4)
+\pstGeonode[PosAngle=60](1.5,1.5){O}
+\pstGeonode[PosAngle=-30](2.5,0){A}
+\pstCircleOA[linecolor=red]{O}{A}
+\pstCircleAbsNode[PosAngleA=-60,PosAngleB=60,PointSymbol=*]{O}{A}{1.0}{C}{D}
+\pstCircleOrdNode[PosAngleA=150,PosAngleB=30,PointSymbol=*]{O}{A}{1.0}{E}{F}
+\pstLineAB[linestyle=dashed,linecolor=gray!40,nodesep=-0.5]{C}{D}
+\pstLineAB[linestyle=dashed,linecolor=gray!40,nodesep=-0.5]{E}{F}
+\end{pspicture}
+\end{LTXexample}
+
+A point can be positioned on a circle using its rotation angle by macro \Lcs{pstCircleRotNode}.
+The rotation angle should be passed by the \Lkeyword{RotAngle} in the \texttt{Options}.
+The circle is defined by center $O$ and point $A$ on the circle or \Lkeyword{Radius} in parameter.
+If you not set \Lkeyword{RotAngle}, the default value is $60^\circ$.
+
+\begin{BDef}
+\Lcs{pstCircleRotNode}\OptArgs\Largb{O}\Largb{A}\Largb{X}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\psset{Radius=\pstDistVal{2.0}}
+\pstGeonode[PosAngle=0](1.5,1.5){O}
+\pstCircleOA[linecolor=red]{O}{}
+\pstCircleRotNode[PosAngle=0,RotAngle=0]{O}{}{A}
+\pstCircleRotNode[PosAngle=60]{O}{}{B} % default 60 degree
+\pstCircleRotNode[PosAngle=90,RotAngle=90]{O}{}{C}
+\pstCircleRotNode[PosAngle=150,RotAngle=\pscalculate{3*360/7}]{O}{}{D}
+\pstCircleRotNode[PosAngle=180,RotAngle=180]{O}{}{E}
+\pstCircleRotNode[PosAngle=230,RotAngle=230]{O}{}{F}
+\pstCircleRotNode[PosAngle=270,RotAngle=270]{O}{}{G}
+\pstCircleRotNode[PosAngle=-45,RotAngle=-45]{O}{}{H}
+\end{pspicture}
+\end{LTXexample}
+
\subsection{Generic curve}
It is possible to generate a set of points using a loop, and to give
@@ -658,6 +873,1871 @@ used to modify the increment from a point to the next one
\end{pspicture}
\end{LTXexample}
+\section{Conics}
+\subsection{Standard Ellipse}
+The Standard Ellipse $E$ with coordinate translation is defined by center $O(x_0,y_0)$,
+the half of the major axis $max(abs(a),abs(b))$, the half of the minor axis $min(abs(a),abs(b))$,
+the equation as following:
+\begin{equation}\label{FunctionOfStandardEllipse}
+\dfrac{(x-x_0)^2}{a^2}+\dfrac{(y-y_0)^2}{b^2}=1
+\end{equation}
+Sometimes we use the parametric function of the Standard Ellipse with coordinate translation:
+\begin{equation}\label{ParametricFunctionOfEllipse}
+\left\{\begin{array}{l}
+x=a\cos\alpha+x_0\\
+y=b\sin\alpha+y_0
+\end{array}\right.
+\end{equation}
+
+The Macro \Lcs{pstEllipse} is used to draw a Standard Ellipse with center $O$ from
+\Lkeyword{angleA} to \Lkeyword{angleB}, going counter clockwise.
+It combines the function like \Lcs{psellipse} and \Lcs{psellipticarc} in \PST.
+If \Lkeyword{angleA} and \Lkeyword{angleB} are not specified,
+the macro will draw the whole ellipse.
+
+\begin{BDef}
+\Lcs{pstEllipse}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{angleA}\OptArg{angleB}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.4}\def\rb{0.8}\def\rot{56}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+%\psellipse[linecolor=red!60](O)(\ra,\rb)
+\pstEllipse[linecolor=red!60](O)(\ra,\rb)[0][120]
+\pstEllipse[linecolor=green!60,linestyle=dashed,arrows=->,arrowscale=1.2](O)(\ra,\rb)[120][200]
+\pstEllipse[linecolor=blue!60](O)(\ra,\rb)[200][300]
+\pstEllipse[linecolor=purple!60,linestyle=dashed,arrows=->,arrowscale=1.2](O)(\ra,\rb)[300][360]
+\pstEllipse[linecolor=cyan!60](O)(\rb,\ra)
+\end{pspicture}
+\end{LTXexample}
+
+Now you can draw some points on this Ellipse using macro \Lcs{pstEllipseNode} or \Lcs{pstEllipseRotNode}.
+The macro \Lcs{pstEllipseNode} requires an explicit parameter $t$ as $\alpha$ in equation (\ref{ParametricFunctionOfEllipse})
+to calculate the point; but the macro \Lcs{pstEllipseRotNode} requires an implicit parameter \Lkeyword{RotAngle}
+as $\alpha$ in equation (\ref{ParametricFunctionOfEllipse}) to calculate the point.
+
+\begin{BDef}
+\Lcs{pstEllipseNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$t$}\Largb{P}\\
+\Lcs{pstEllipseRotNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{P}
+\end{BDef}
+
+The following is the example, note that the \Lkeyword{RotAngle} is not $\angle{HOX}$ in geometrical,
+but $\angle{HOA}$ or $\angle{HOB}$.
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.4}\def\rb{0.8}\def\rot{56}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+%\psellipse[linecolor=red!60](O)(\ra,\rb)
+\pstEllipse[linecolor=red!60](O)(\ra,\rb)
+\pstEllipseNode[PosAngle=180](O)(\ra,\rb){180}{P}
+\pstEllipseRotNode[PosAngle=0,RotAngle=0](O)(\ra,\rb){Q}
+\pstEllipseRotNode[PosAngle=90,RotAngle=90](O)(\ra,\rb){M}
+\pstEllipseRotNode[PosAngle=-90,RotAngle=-90](O)(\ra,\rb){N}
+\pstCircleOA[linecolor=blue!60,Radius=\pstDistVal{\ra}]{O}{}
+\pstCircleRotNode[PosAngle=\rot,RotAngle=\rot,Radius=\pstDistVal{\ra}]{O}{}{A}
+\pstCircleOA[linecolor=green!60,Radius=\pstDistVal{\rb}]{O}{}
+\pstCircleRotNode[PosAngle=180,RotAngle=\rot,Radius=\pstDistVal{\rb}]{O}{}{B}
+\pstEllipseRotNode[PosAngle=30,RotAngle=\rot](O)(\ra,\rb){X}
+\pstProjection[PosAngle=-90]{P}{Q}{A}[H]
+\pstLineAB[linestyle=dashed]{A}{O}
+\pstLineAB[linestyle=dashed]{A}{H}
+\pstLineAB[linestyle=dashed]{B}{X}
+\pstLineAB[linestyle=dashed]{O}{H}
+\pstMarkAngle[LabelSep=.6,MarkAngleRadius=.3,MarkAngleType=double,fillcolor=red!30,fillstyle=solid]{H}{O}{A}{$\rot^\circ$}
+\end{pspicture}
+\end{LTXexample}
+
+The macros \Lcs{pstEllipseAbsNode} and \Lcs{pstEllipseOrdNode} are used to get the two nodes $A$ and $B$
+whose abscissas or ordinates are the given value $x_1$ or $y_1$ on the Standard Ellipse $E$.
+
+If there is no such point satisfied this condition, then the nodes $A$ and $B$ will be put at the origin.
+
+\begin{BDef}
+\Lcs{pstEllipseAbsNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstEllipseOrdNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.0}\def\rb{-1.2}
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](2,2){O}
+\pstEllipse[linecolor=red!40](O)(\ra,\rb)
+\pstEllipse[linecolor=blue!40](O)(\rb,\ra)
+\pstEllipseAbsNode[PosAngle={120,200}](O)(\ra,\rb){2.5}{A}{B}
+\pstEllipseAbsNode(O)(\ra,\rb){6}{X}{Y} % not exist
+\pstEllipseOrdNode(O)(\ra,\rb){2.5}{A'}{B'}
+\pstEllipseOrdNode(O)(\ra,\rb){6}{X'}{Y'} % not exist
+\end{pspicture}
+\end{LTXexample}
+
+Here we find the focus node of Standard Ellipse! Please use macro \Lcs{pstEllipseFocusNode} to do this work.
+
+\begin{BDef}
+\Lcs{pstEllipseFocusNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{A}\Largb{B}
+\end{BDef}
+
+For example:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.0}\def\rb{-1.2}
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](2,2){O}
+\pstEllipse[linecolor=red!40](O)(\ra,\rb)
+\pstEllipse[linecolor=blue!40](O)(\rb,\ra)
+\pstEllipseFocusNode(O)(\ra,\rb){L}{R}
+\pstEllipseFocusNode(O)(\rb,\ra){D}{U}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstEllipseDirectrixLine} is used to draw the two directrix lines of Standard Ellipse,
+and create two new nodes on each of them. The nodes $L_x$, $L_y$ are on the left/down directrix line,
+and $R_x$, $R_y$ are on the right/up directrix line. They are lie on the tangent line of the vertex
+on the other axis.
+
+\begin{BDef}
+\Lcs{pstEllipseDirectrixLine}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$L_x$}\Largb{$L_y$}\Largb{$R_x$}\Largb{$R_y$}
+\end{BDef}
+
+For example:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.0}\def\rb{-1.2}
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](2,2){O}
+\pstEllipse[linecolor=red!40](O)(\ra,\rb)
+\pstEllipse[linecolor=blue!40](O)(\rb,\ra)
+\pstEllipseDirectrixLine[PointName={L_x,L_y,R_x,R_y},PosAngle={210,210,-30,-30},nodesep=-1,linecolor=red!40](O)(\ra,\rb){Lx}{Ly}{Rx}{Ry}
+\pstEllipseDirectrixLine[PointName={D_x,D_y,U_x,U_y},PosAngle={-30,-30,30,30},nodesep=-1,linecolor=blue!40](O)(\rb,\ra){Dx}{Dy}{Ux}{Uy}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{Lx}{Rx}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{Ly}{Ry}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{Dx}{Ux}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{Dy}{Uy}
+\end{pspicture}
+\end{LTXexample}
+
+Sometimes we need to find the intersection of Ellipse and line,
+the Macro \Lcs{pstEllipseLineInter} can do this work, and it can handle any type of line,
+i.e, horizontal, vertical or others lines. It get the two intersection $C$ and $D$ of the
+Standard Ellipse $E$ and the given line $AB$. When there is none intersection,
+$C$ and $D$ are both put at the origin; When there is only on intersection, it will be saved
+at node $C$, and $D$ will be put at the origin.
+
+\begin{BDef}
+\Lcs{pstEllipseLineInter}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$A$}\Largb{$B$}\Largb{$C$}\Largb{$D$}
+\end{BDef}
+
+Here is examples:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.0}\def\rb{-1.2}
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](2,2){O}
+\pstEllipse[linecolor=red!40](O)(\ra,\rb)
+\pstEllipse[linecolor=blue!40](O)(\rb,\ra)
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{0,1}{3,4}
+\pstEllipseLineInter[PosAngle={-90,90}](O)(\ra,\rb){0,1}{3,4}{C}{D}
+\pstEllipseLineInter[PosAngle={-90,90}](O)(\rb,\ra){0,1}{3,4}{C'}{D'}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{1.5,0}{1.5,4}
+\pstEllipseLineInter[PosAngle={40,60}](O)(\ra,\rb){1.5,0}{1.5,4}{E}{F}
+\pstEllipseLineInter[PosAngle={40,130}](O)(\rb,\ra){1.5,1}{1.5,4}{E'}{F'}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{4,2.5}{0,2.5}
+\pstEllipseLineInter[PosAngle={130,50}](O)(\ra,\rb){4,2.5}{0,2.5}{G}{H}
+\pstEllipseLineInter[PosAngle={130,50}](O)(\rb,\ra){4,2.5}{0,2.5}{G'}{H'}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstEllipsePolarNode} is use to draw the tangent line of a point $A$ or $B$
+on the Standard Ellipse. It draws the every tangent line through the point $A$ and $B$ on
+the Standard Ellipse $E$ and get the insection node $T$ of the two tangent lines.
+We call $T$ as the polar point of chord $AB$ as normal.
+
+\begin{BDef}
+\Lcs{pstEllipsePolarNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$A$}\Largb{$B$}\Largb{$T$}
+\end{BDef}
+
+We use the following theorem to find the node $T$:
+\begin{theorem}\label{EllipsePolarPointTheorem}
+Give chord $AB$ on the ellipse, we draw any other two chords $PQ$ and $RS$, $AB$ and $PQ$ intersect at $I$,
+$AQ$ and $BP$ intersect at $X$, $AP$ and $BQ$ intersect at $Y$, we call $XY$ is the polar line of point $I$.
+Also $AB$ and $RS$ intersect at $J$, $AR$ and $BS$ intersect at $M$, $AS$ and $BR$ intersect at $N$,
+we call $MN$ is the polar line of point $J$. Then the intersection $T$ of $XY$ and $MN$ is the polar point of chord $AB$,
+i.e. $TA$ is the tangent line through $A$ and $TB$ is the tangent line through $B$.
+\end{theorem}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\rb{2.0}\def\ra{-1.2}
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](2,2){O}
+\pstEllipse[linecolor=red!40](O)(\ra,\rb)
+\pstLine[nodesep=-0.8,linecolor=black!40,linestyle=dashed]{1,2}{2.5,3.5}
+\pstEllipseLineInter[PosAngle={-100,90}](O)(\ra,\rb){1,2}{2.5,3.5}{A}{B}
+\pstEllipsePolarNode[PosAngle=120](O)(\ra,\rb){A}{B}{T}
+% Here are the auxiliary lines to explain Theorem 1.
+\pstEllipseRotNode[PosAngle=0,RotAngle=5](O)(\ra,\rb){P}
+\pstEllipseRotNode[PosAngle=-10,RotAngle=-61](O)(\ra,\rb){Q}
+\pstEllipseRotNode[PosAngle=-100,RotAngle=-92](O)(\ra,\rb){R}
+\pstEllipseRotNode[PosAngle=0,RotAngle=-30](O)(\ra,\rb){S}
+\pstInterLL[PosAngle=-90]{A}{Q}{B}{P}{X}
+\pstInterLL[PosAngle=-10]{A}{P}{B}{Q}{Y}
+\pstInterLL[PosAngle=-90]{A}{R}{B}{S}{M}
+\pstInterLL[PosAngle=190]{A}{S}{B}{R}{N}
+\psset{linestyle=dashed,linecolor=gray!40}
+\pstLine{A}{Q}\pstLine{B}{P}\pstLine{A}{P}\pstLine{B}{Q}
+\pstLine{A}{R}\pstLine{B}{S}\pstLine{A}{S}\pstLine{B}{R}
+\pstLine{Q}{X}\pstLine{Q}{Y}\pstLine{P}{X}\pstLine{P}{Y}
+\pstLine{R}{M}\pstLine{S}{M}\pstLine{T}{Y}\pstLine{T}{N}
+\pstLine[linestyle=dashed,linecolor=red!40]{X}{Y}
+\pstLine[linestyle=dashed,linecolor=red!40]{M}{N}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstEllipseTangentNode} is use to draw the tangent line of a point $T$
+out of the Standard Ellipse $E$. It draw the two tangent lines through the point $T$
+to the Standard Ellipse $E$ and get the node $A$ and $B$ on the Ellipse.
+
+\begin{BDef}
+\Lcs{pstEllipseTangentNode}\OptArgs\Largr{O}\Largr{$a,b$}\Largb{$T$}\Largb{$A$}\Largb{$B$}
+\end{BDef}
+
+We use the following theorem to find the tangent node of the given $T$:
+\begin{theorem}\label{EllipseTangentPointTheorem}
+Give point $T$ outside of the ellipse, we draw any other two chords $TPQ$ and $TRS$,
+let $PS$ and $QR$ intersect at $I$, $PR$ and $QS$ intersect at $X$, $XI$ and Ellipse intersect at $A$ and $B$,
+then $TA$ is the tangent line through $A$ and $TB$ is the tangent line through $B$.
+\end{theorem}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.0}\def\rb{-1.2}
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](2,2){O}
+\pstEllipse[linecolor=red!40](O)(\ra,\rb)
+\pstGeonode[PosAngle=-50,PointNameSep=0.2](-1,-1){T}
+\pstEllipseTangentNode[PosAngle=120](O)(\ra,\rb){T}{A}{B}
+% Here are the auxiliary lines to explain Theorem 2.
+\pstEllipseRotNode[PointName=none,RotAngle=71](O)(\ra,\rb){P0}
+\pstEllipseRotNode[PointName=none,RotAngle=31](O)(\ra,\rb){R0}
+\pstEllipseLineInter[PosAngle=0](O)(\ra,\rb){T}{P0}{P}{Q}
+\pstEllipseLineInter[PosAngle=0](O)(\ra,\rb){T}{R0}{R}{S}
+\pstInterLL[PosAngle=0]{P}{S}{Q}{R}{I}
+\pstInterLL[PosAngle=0]{P}{R}{Q}{S}{X}
+\psset{linestyle=dashed,linecolor=gray!40}
+\pstLine{T}{P}\pstLine{P}{Q}\pstLine{T}{R}\pstLine{R}{S}
+\pstLine{P}{S}\pstLine{Q}{R}\pstLine{P}{R}\pstLine{Q}{S}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{General Ellipse}
+Now we will introduce some macros for the General Ellipse as same as the Standard Ellipse.
+The General Ellipse $E$ with coordinate translation and rotation is defined by center $O(x_0,y_0)$,
+the half of the major axis $max(abs(a),abs(b))$, the half of the minor axis $min(abs(a),abs(b))$,
+and the rotation angle $\theta$ of the major axis.
+
+The equation can be got from the parametric function of the ellipse equation (\ref{ParametricFunctionOfEllipse}),
+using the rotation transform formula:
+\begin{equation}\label{RotationTransformFormula}
+\left\{\begin{array}{l}
+x'=x\cos\theta-y\sin\theta\\
+y'=x\sin\theta+y\cos\theta
+\end{array}\right.
+\end{equation}
+then we have
+\begin{equation}
+\left\{\begin{array}{l}
+x'=(a\cos\alpha+x_0)\cos\theta-(b\sin\alpha+y_0)\sin\theta=a\cos\alpha\cos\theta-b\sin\alpha\sin\theta+x_0'\\
+y'=(a\cos\alpha+x_0)\sin\theta+(b\sin\alpha+y_0)\cos\theta=a\cos\alpha\sin\theta+b\sin\alpha\cos\theta+y_0'
+\end{array}\right.
+\end{equation}
+where the $x_0'$ and $y_0'$ are the coordinate of the given center $O$ after rotation.
+So we get the parametric function of the General Ellipse with coordinate translation and rotation as following:
+\begin{equation}\label{ParametricFunctionOfGeneralEllipse}
+\left\{\begin{array}{l}
+x=a\cos\alpha\cos\theta-b\sin\alpha\sin\theta+x_0\\
+y=a\cos\alpha\sin\theta+b\sin\alpha\cos\theta+y_0
+\end{array}\right.
+\end{equation}
+
+The Macro \Lcs{pstGeneralEllipse} is used to draw a General Ellipse with center $O$ from
+\Lkeyword{angleA} to \Lkeyword{angleB}, going counter clockwise.
+If \Lkeyword{angleA} and \Lkeyword{angleB} are not specified,
+the macro will draw the whole ellipse.
+If you not input rotation angle $\theta$, the default value is $0^\circ$,
+at this time, the result of this macro is same as \Lcs{pstEllipse}.
+That is, \Lcs{pstGeneralEllipse} is more complex than \Lcs{pstEllipse}!
+
+\begin{BDef}
+\Lcs{pstGeneralEllipse}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\OptArg{angleA}\OptArg{angleB}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.4}\def\rb{-1.5}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+\pstGeneralEllipse[linecolor=red!40](O)(\ra,\rb)[0]
+\pstGeneralEllipse[linecolor=gray!10](O)(\ra,\rb)[10]
+\pstGeneralEllipse[linecolor=gray!20](O)(\ra,\rb)[20]
+\pstGeneralEllipse[linecolor=gray!30](O)(\ra,\rb)[30]
+\pstGeneralEllipse[linecolor=gray!40](O)(\ra,\rb)[40]
+\pstGeneralEllipse[linecolor=magenta!40](O)(\ra,\rb)[50]
+\end{pspicture}
+\end{LTXexample}
+
+Similarly, we can location the points on the General Ellipse using the macros
+\Lcs{pstGeneralEllipseNode}, \Lcs{pstGeneralEllipseRotNode}, \Lcs{pstGeneralEllipseAbsNode}
+and \Lcs{pstGeneralEllipseOrdNode} as following.
+
+\begin{BDef}
+\Lcs{pstGeneralEllipseNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstGeneralEllipseRotNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{A}\\
+\Lcs{pstGeneralEllipseAbsNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstGeneralEllipseOrdNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+Some examples all together:
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.4}\def\rb{-1.5}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+\pstGeneralEllipse[linecolor=magenta!40](O)(\ra,\rb)[50]
+\pstGeneralEllipseNode[PosAngle=30](O)(\ra,\rb)[50]{30}{A}
+\pstGeneralEllipseRotNode[PosAngle=120,RotAngle=120](O)(\ra,\rb)[50]{B}
+\pstGeneralEllipseRotNode[PosAngle=0,RotAngle=0](O)(\ra,\rb)[50]{C}
+\pstGeneralEllipseRotNode[PosAngle=0,RotAngle=90](O)(\ra,\rb)[50]{D}
+\pstGeneralEllipseRotNode[PosAngle=-90,RotAngle=180](O)(\ra,\rb)[50]{E}
+\pstGeneralEllipseRotNode[PosAngle=90,RotAngle=-90](O)(\ra,\rb)[50]{F}
+\pstGeneralEllipseAbsNode[PosAngle={60,240}](O)(\ra,\rb)[50]{2}{I}{J}
+\pstGeneralEllipseOrdNode[PosAngle={-40,210}](O)(\ra,\rb)[50]{1}{M}{N}
+\pstLineAB[nodesep=-1,linecolor=blue!40]{C}{E}
+\pstLineAB[nodesep=-1,linecolor=blue!40]{D}{F}
+\end{pspicture}
+\end{LTXexample}
+
+Using macro \Lcs{pstGeneralEllipseFocusNode} to find the two focus nodes, and macro \\
+\Lcs{pstGeneralEllipseDirectrixLine} to get the two directrix lines.
+
+\begin{BDef}
+\Lcs{pstGeneralEllipseFocusNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstGeneralEllipseDirectrixLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{A}
+\end{BDef}
+
+for example,
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{2.4}\def\rb{-1.5}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+\pstGeneralEllipse[linecolor=magenta!40](O)(\ra,\rb)[50]
+\pstGeneralEllipseFocusNode[PosAngle={-40,-40}](O)(\ra,\rb)[50]{L}{R}
+\pstGeneralEllipseDirectrixLine[PointName={L_x,L_y,R_x,R_y},nodesep=-1,linecolor=magenta](O)(\ra,\rb)[50]{Lx}{Ly}{Rx}{Ry}
+\pstLine[nodesep=-1,linecolor=red!40]{L}{R}
+\pstLine[nodesep=-1,linecolor=red!40,linestyle=dashed]{Lx}{Rx}
+\pstLine[nodesep=-1,linecolor=red!40,linestyle=dashed]{Ly}{Ry}
+\end{pspicture}
+\end{LTXexample}
+
+Using \Lcs{pstGeneralEllipseLineInter} to get the two intersections $C$ and $D$ of the General Ellipse $E$ and the given line $AB$!
+
+\begin{BDef}
+\Lcs{pstGeneralEllipseLineInter}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{A}\Largb{B}\Largb{C}\Largb{D}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{1.5}\def\rb{-2.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+\pstGeneralEllipse[linecolor=blue!40](O)(\ra,\rb)[50]
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{0,1}{1.5,4}
+\pstGeneralEllipseLineInter[PosAngle={-90,90}](O)(\ra,\rb)[50]{0,1}{1.5,4}{A}{B}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{0,3}{3,3}
+\pstGeneralEllipseLineInter[PosAngle={-90,240}](O)(\ra,\rb)[50]{0,3}{3,3}{C}{D}
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{1,0}{1,4}
+\pstGeneralEllipseLineInter[PosAngle={30,10}](O)(\ra,\rb)[50]{1,1}{1,4}{E}{F}
+\end{pspicture}
+\end{LTXexample}
+
+Using \Lcs{pstGeneralEllipsePolarNode} to find the polar point $T$ of chord $AB$,
+please refer to Theorem \ref{EllipsePolarPointTheorem}.
+
+\begin{BDef}
+\Lcs{pstGeneralEllipsePolarNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{A}\Largb{B}\Largb{T}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{1.5}\def\rb{-2.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+\pstGeneralEllipse[linecolor=blue!40](O)(\ra,\rb)[50]
+\pstLine[nodesep=-0.5,linecolor=black!40,linestyle=dashed]{0,1}{1.5,4}
+\pstGeneralEllipseLineInter[PosAngle={-90,90}](O)(\ra,\rb)[50]{0,1}{1.5,4}{A}{B}
+\pstGeneralEllipsePolarNode[PosAngle=90](O)(\ra,\rb)[50]{A}{B}{T}
+\end{pspicture}
+\end{LTXexample}
+
+Using \Lcs{pstGeneralEllipseTangentNode} to find the tangent point $A$ and $B$ of outside point $T$,
+please refer to Theorem \ref{EllipseTangentPointTheorem}.
+
+\begin{BDef}
+\Lcs{pstGeneralEllipseTangentNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{T}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\ra{1.5}\def\rb{-2.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,2){O}
+\pstGeneralEllipse[linecolor=blue!40](O)(\ra,\rb)[50]
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](-1,-1){P}
+\pstGeneralEllipseTangentNode[PosAngle=90](O)(\ra,\rb)[50]{P}{X}{Y}
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+
+\subsection{Standard Parabola}
+The Standard Parabola $P$ with coordinate translation is defined by vertex $O(x_0,y_0)$,
+the half of the focus chord axis $abs(p)$.
+Note that the sign of $p$ indicates the direction of the parabola.
+
+The equation can be written as:
+\begin{equation}\label{FunctionOfStandardParabola}
+(x-x_0)^2=2p(y-y_0)
+\end{equation}
+and the parametric function can be written as:
+\begin{equation}\label{ParametricFunctionOfStandardParabola}
+\left\{\begin{array}{l}
+x=t+x_0\\
+y=\dfrac{t^2}{2p}+y_0
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstParabola} is used to draw a Parabola from $x_1$ to $x_2$ with Vertex $O$,
+the half of the focus chord axis $abs(p)$.
+
+\begin{BDef}
+ \Lcs{pstParabola}\OptArgs\Largr{O}\Largb{$p$}\Largb{$x_1$}\Largb{$x_2$}
+\end{BDef}
+
+The macro \Lcs{pstParabolaNode} is used to draw a node whose parameter is the given value $t$ on parabola,
+please refer to equation (\ref{ParametricFunctionOfStandardParabola}).
+The macro \Lcs{pstParabolaAbsNode} is used to draw a node whose abscissa is the given value $x_1$ on parabola.
+The macro \Lcs{pstParabolaOrdNode} is used to draw a node whose ordinate is the given value $y_1$ on parabola.
+Note that \Lcs{pstParabolaOrdNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstParabolaNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstParabolaAbsNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{$x_1$}\Largb{A}\\
+\Lcs{pstParabolaOrdNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstParabolaNode[PosAngle=-90](O){\p}{1.5}{A}
+\pstParabolaAbsNode[PosAngle=-90,PointName=X_1](O){\p}{1.5}{X1}
+\pstParabolaOrdNode[PosAngle=40,PointName={Y_1,Y_2}](O){\p}{1.5}{Y1}{Y2}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstParabolaFocusNode} is used to find the focus of the parabola,
+and the macro \Lcs{pstParabolaDirectrixLine} is used to find the directrix line of the parabola.
+
+\begin{BDef}
+\Lcs{pstParabolaFocusNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{F}\\
+\Lcs{pstParabolaDirectrixLine}\OptArgs\Largr{O}\Largb{$p$}\Largb{$L_x$}\Largb{$L_y$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstParabolaFocusNode[linecolor=red!40,PosAngle=50](O){\p}{F}
+\pstParabolaDirectrixLine[linecolor=red!40,nodesepA=-1.8,nodesepB=-1,PosAngle={-50,-50}](O){\p}{A}{B}
+\pstLine[linecolor=red!40,nodesepA=-0.8,nodesepB=-2.5]{A}{F}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstParabolaLineInter} is used to find the intersections $C$ and $D$ of the parabola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstParabolaLineInter}\OptArgs\Largr{O}\Largb{$p$}\Largb{A}\Largb{B}\Largb{C}\Largb{D}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstLine[linecolor=gray!40,nodesepA=-0.8,nodesepB=-0.8]{0,2}{4,1}
+\pstParabolaLineInter[linecolor=gray!40,PosAngle={120,210}](O){\p}{0,2}{4,1}{P}{Q}
+\pstLine[linecolor=purple!40,nodesepA=-0.8,nodesepB=-0.8]{2.5,0}{2.5,3}
+\pstParabolaLineInter[linecolor=purple!40,PosAngle={0,210}](O){\p}{2.5,0}{2.5,3}{U}{V}
+\pstLine[linecolor=green!40,nodesepA=-2.5,nodesepB=-1.6]{1.5,2.5}{0.5,2.5}
+\pstParabolaLineInter[linecolor=green!40,PosAngle={210,210}](O){\p}{1.5,2.5}{0.5,2.5}{M}{N}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstParabolaPolarNode} is used to find the polar point $T$ of chord $AB$ on Parabola $P$.
+
+\begin{BDef}
+\Lcs{pstParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\Largr{F}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\Largr{F}\OptArg{$L_x$}\OptArg{$L_y$}\Largb{A}\Largb{B}\Largb{T}
+\end{BDef}
+
+We use the following theorem to find the polar point $T$ of chord $AB$:
+\begin{theorem}\label{ParabolaPolarPointTheorem}
+Give any chord $AB$ on parabola, drawing two focal chord $AFC$ and $BFD$, where $F$ is the focus of parabola,
+then drawing $FX$ which is perpendicular to $AFC$ at point $F$, and intersect with the directrix line at $X$;
+also drawing $FY$ which is perpendicular to $BFD$ at point $F$, and intersect with the directrix line at $Y$.
+Then the intersection $T$ of $AX$ and $BY$ is the polar point of chord $AB$.
+\end{theorem}
+
+If you don't know the focus $F$, or the directrix line, we will find them automated, otherwise you can pass them to this macro.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstLine[linecolor=gray!40,nodesepA=-0.8,nodesepB=-0.8]{0,2}{4,1}
+\pstParabolaLineInter[linecolor=gray!40,PosAngle={120,210}](O){\p}{0,2}{4,1}{P}{Q}
+% if you don't know focus F or directrix line
+\pstParabolaPolarNode[linecolor=purple!40,PosAngle=-90](O){\p}{P}{Q}{T}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstParabolaFocusNode[linecolor=red!40](O){\p}{F}
+\pstLine[linecolor=gray!40,nodesepA=-0.8,nodesepB=-0.8]{0,2}{4,1}
+\pstParabolaLineInter[linecolor=gray!40,PosAngle={120,210}](O){\p}{0,2}{4,1}{P}{Q}
+% if you know focus F, but don't known directrix line
+\pstParabolaPolarNode[linecolor=purple!40,PosAngle=-90](O){\p}(F){P}{Q}{T}
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{1cm}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstParabolaFocusNode[linecolor=red!40](O){\p}{F}
+\pstParabolaDirectrixLine[linecolor=red!40,nodesepA=-2.8,nodesepB=-2,PosAngle={-50,-50}](O){\p}{A}{B}
+\pstLineAB[linecolor=red!40,nodesepA=-0.8,nodesepB=-2.5]{A}{F}
+\pstLine[linecolor=gray!40,nodesepA=-0.8,nodesepB=-0.8]{0,2}{4,1}
+\pstParabolaLineInter[linecolor=gray!40,PosAngle={120,210}](O){\p}{0,2}{4,1}{P}{Q}
+% if you know focus F and also directrix line
+\pstParabolaPolarNode[linecolor=purple!40,PosAngle=-90](O){\p}(F)[A][B]{P}{Q}{T}
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{10pt}
+
+The macro \Lcs{pstParabolaTangentNode} is used to find the two nodes $A$ and $B$ on the Parabola through the point $T$.
+
+\begin{BDef}
+\Lcs{pstParabolaTangentNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{T}\Largb{A}\Largb{B}
+\end{BDef}
+
+We use the following theorem to find the tangent node $A$ and $B$ of outside point $T$:
+\begin{theorem}\label{ParabolaTangentPointTheorem}
+Give point $T$ outside of the parabola, we draw any other two chords $TPQ$ and $TRS$,
+$PS$ and $QR$ intersect at $I$, $PR$ and $QS$ intersect at $X$, $XI$ and Parabola intersect at $A$ and $B$,
+then $TA$ is the tangent line through $A$ and $TB$ is the tangent line through $B$.
+\end{theorem}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstGeonode[PosAngle=-90](1.5,-1){T}
+\pstParabolaTangentNode[linecolor=red!50,PosAngle={80,140},PointName={T_1,T_2}](O){\p}{T}{T1}{T2}
+\pstGeonode[PosAngle=-90](2,-1){P}
+\pstParabolaTangentNode[linecolor=red!50,PosAngle={80,140},PointName={P_1,P_2}](O){\p}{P}{P1}{P2}
+\pstGeonode[PosAngle=-90](2.3,-1){X}
+\pstParabolaTangentNode[linecolor=red!50,PosAngle={80,140},PointName={X_1,X_2}](O){\p}{X}{X1}{X2}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Standard Inversion Parabola}
+The Inversion Parabola $P$ with coordinate translation is defined by vertex $O(x_0,y_0)$,
+the half of the focus chord axis $abs(p)$.
+Note that the sign of $p$ indicates the direction of the parabola.
+The equation can be written as:
+\begin{equation}\label{StandardInversionParabola}
+(y-y_0)^2=2p(x-x_0)
+\end{equation}
+and the parametric function can be written as:
+\begin{equation}\label{ParametricFunctionOfStandardInversionParabola}
+\left\{\begin{array}{l}
+x=\dfrac{t^2}{2p}+x_0\\
+y=t+y_0
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstIParabola} is used to draw a Standard Inversion Parabola from $y_1$ to $y_2$ with Vertex $O$,
+the half of the focus chord axis $abs(p)$.
+
+\begin{BDef}
+\Lcs{pstIParabola}\OptArgs\Largr{O}\Largb{$p$}\Largb{$y_1$}\Largb{$y_2$}
+\end{BDef}
+
+The macro \Lcs{pstIParabolaNode} is used to draw a node whose parameter is the given value $t$ on parabola,
+please refer to equation (\ref{ParametricFunctionOfStandardInversionParabola}).
+The macro \Lcs{pstIParabolaAbsNode} is used to draw a node whose abscissa is the given value $x_1$ on parabola.
+The macro \Lcs{pstIParabolaOrdNode} is used to draw a node whose ordinate is the given value $y_1$ on parabola.
+Note that \Lcs{pstIParabolaAbsNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstIParabolaNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstIParabolaAbsNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstIParabolaOrdNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{$y_1$}\Largb{A}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(3,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=0,PointNameSep=0.2](2,0){O}
+\pstIParabola[linecolor=blue!40](O){-\p}{-1.5}{1.5}
+\pstIParabolaNode[PosAngle=90](O){-\p}{1}{A}
+\pstIParabolaAbsNode[PosAngle=90,PointName={X_2,X_3},PosAngle={-90,90}](O){-\p}{1.5}{X2}{X3}
+\pstIParabolaOrdNode[PosAngle=-90,PointName=Y_3](O){-\p}{-1}{Y3}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIParabolaFocusNode} is used to find the focus of the parabola,
+and the macro \Lcs{pstIParabolaDirectrixLine} is used to find the directrix line of the parabola.
+
+\begin{BDef}
+\Lcs{pstIParabolaFocusNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{F}\\
+\Lcs{pstIParabolaDirectrixLine}\OptArgs\Largr{O}\Largb{$p$}\Largb{$L_x$}\Largb{$L_y$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(3,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-30,PointNameSep=0.2](2,0){O}
+\pstIParabola[linecolor=blue!40](O){-\p}{-1.5}{1.5}
+\pstIParabolaFocusNode[linecolor=blue!40,PosAngle=120](O){-\p}{F}
+\pstIParabolaDirectrixLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PosAngle={50,20}](O){-\p}{C}{D}
+\pstLine[linecolor=blue!40,nodesepA=-0.8,nodesepB=-2.5]{C}{F}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIParabolaLineInter} is used to find the intersections $C$ and $D$ of the parabola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstIParabolaLineInter}\OptArgs\Largr{O}\Largb{$p$}\Largb{A}\Largb{B}\Largb{C}\Largb{D}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(3,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=0,PointNameSep=0.2](2,0){O}
+\pstIParabola[linecolor=blue!40](O){-\p}{-1.5}{1.5}
+\pstLine[linecolor=gray!40]{0,2}{1,-2}
+\pstIParabolaLineInter[linecolor=gray!40,PosAngle={70,-90}](O){-\p}{1,-2}{0,2}{P}{Q}
+\pstLine[linecolor=purple!40]{1.2,-1.5}{1.2,1.5}
+\pstIParabolaLineInter[linecolor=purple!40,PosAngle={-40,210}](O){-\p}{1.2,-1.5}{1.2,1.5}{U}{V}
+\pstLine[linecolor=green!40]{-1,0.5}{2.5,0.5}
+\pstIParabolaLineInter[linecolor=green!40,PosAngle={70,-90}](O){-\p}{-1,0.5}{2.5,0.5}{M}{N}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIParabolaPolarNode} is used to find the polar point $T$ of chord $AB$ on Parabola $P$.
+
+\begin{BDef}
+\Lcs{pstIParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstIParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\Largr{F}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstIParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\Largr{F}\OptArg{$L_x$}\OptArg{$L_y$}\Largb{A}\Largb{B}\Largb{T}
+\end{BDef}
+
+We also use the theorem \ref{ParabolaPolarPointTheorem} to find the polar point $T$ of chord $AB$.
+If you don't know the focus $F$, or the directrix line, we will find them automated, otherwise you can pass them to this macro.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-2)(5,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstIParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstLine[linecolor=gray!40,nodesepA=-0.5]{2,1}{4,-2}
+\pstIParabolaLineInter[PosAngle={80,-100}](O){\p}{2,1}{4,-2}{P}{Q}
+% if you don't know focus F or directrix line
+\pstIParabolaPolarNode[linecolor=purple!40,PosAngle=-90](O){\p}{P}{Q}{T}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-2)(5,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstIParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstIParabolaFocusNode[linecolor=red!40](O){\p}{F}
+\pstLine[linecolor=gray!40,nodesepA=-0.5]{2,1}{4,-2}
+\pstIParabolaLineInter[PosAngle={80,-100}](O){\p}{2,1}{4,-2}{P}{Q}
+% if you know focus F, but don't known directrix line
+\pstIParabolaPolarNode[linecolor=purple!40,PosAngle=-90](O){\p}(F){P}{Q}{T}
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{1cm}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-2)(5,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-130,PointNameSep=0.2](2,0){O}
+\pstIParabola[linecolor=red!40](O){\p}{-1.5}{1.5}
+\pstIParabolaFocusNode[linecolor=red!40](O){\p}{F}
+\pstIParabolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PosAngle={180,180}](O){\p}{A}{B}
+\pstLine[linecolor=gray!40,nodesepA=-0.5]{2,1}{4,-2}
+\pstIParabolaLineInter[PosAngle={80,-100}](O){\p}{2,1}{4,-2}{P}{Q}
+% if you know focus F and also directrix line
+\pstIParabolaPolarNode[linecolor=purple!40,PosAngle=-90](O){\p}(F)[A][B]{P}{Q}{T}
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{10pt}
+
+The macro \Lcs{pstIParabolaTangentNode} is used to find the two nodes $A$ and $B$ on the Parabola through the point $T$.
+
+\begin{BDef}
+\Lcs{pstIParabolaTangentNode}\OptArgs\Largr{O}\Largb{$p$}\Largb{T}\Largb{A}\Largb{B}
+\end{BDef}
+
+We also use the theorem \ref{ParabolaTangentPointTheorem} to find the tangent node $A$ and $B$ of outside point $T$!
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,0)(5,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-45,PointNameSep=0.2](4,2){O}
+\pstIParabola[linecolor=blue!40](O){-\p}{-1.5}{1.5}
+\pstGeonode[PosAngle=0](5,1.5){T}
+\pstIParabolaTangentNode[linecolor=red!50,PosAngle={80,-100},PointName={T_1,T_2}](O){-\p}{T}{T1}{T2}
+\pstGeonode[PosAngle=0](5,2.5){P}
+\pstIParabolaTangentNode[linecolor=red!50,PosAngle={80,90},PointName={P_1,P_2}](O){-\p}{P}{P1}{P2}
+\pstGeonode[PosAngle=0](5,2){X}
+\pstIParabolaTangentNode[linecolor=red!50,PosAngle={80,-100},PointName={X_1,X_2}](O){-\p}{X}{X1}{X2}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{General Parabola}
+The General Parabola $P$ with coordinate translation and rotation is defined by vertex $O(x_0,y_0)$,
+the half of the focus chord axis $abs(p)$, the sign of $p$ indicates the direction of the parabola,
+and the rotation angle $\theta$ of the symmetrical axis.
+
+The equation can be got from the parametric function of the parabola equation (\ref{ParametricFunctionOfStandardParabola}),
+using the rotation transform formula (\ref{RotationTransformFormula}), then we have
+\begin{equation}
+\left\{\begin{array}{l}
+x'=(t+x_0)\cos\theta-(\dfrac{t^2}{2p}+y_0)\sin\theta=x_0'+t\cos\theta-t^2\dfrac{\sin\theta}{2p}\\
+y'=(t+x_0)\sin\theta+(\dfrac{t^2}{2p}+y_0)\cos\theta=y_0'+t\sin\theta+t^2\dfrac{\cos\theta}{2p}
+\end{array}\right.
+\end{equation}
+where the $x_0'$ and $y_0'$ are the coordinate of the given vertex O after rotation.
+So we get the parametric function of the General Parabola with coordinate translation and rotation as following:
+\begin{equation}\label{ParametricFunctionOfGeneralParabola}
+\left\{\begin{array}{l}
+x=x_0+t\cos\theta-t^2\dfrac{\sin\theta}{2p}\\
+y=y_0+t\sin\theta+t^2\dfrac{\cos\theta}{2p}
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstGeneralParabola} is used to draw a General Parabola from $x_1$ to $x_2$ with Vertex $O$,
+the half of the focus chord axis $abs(p)$.
+
+\begin{BDef}
+\Lcs{pstGeneralParabola}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$x_1$}\Largb{$x_2$}
+\end{BDef}
+
+The macro \Lcs{pstGeneralParabolaNode} is used to draw a node whose parameter is the given value $t$ on parabola,
+please refer to equation (\ref{ParametricFunctionOfGeneralParabola}).
+The macro \Lcs{pstGeneralParabolaAbsNode} is used to draw a node whose abscissa is the given value $x_1$ on parabola.
+The macro \Lcs{pstGeneralParabolaOrdNode} is used to draw a node whose ordinate is the given value $y_1$ on parabola.
+
+Note that \Lcs{pstGeneralParabolaAbsNode} and \Lcs{pstGeneralParabolaOrdNode} both create two nodes $A$ and $B$
+at most time.
+
+\begin{BDef}
+\Lcs{pstGeneralParabolaNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstGeneralParabolaAbsNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstGeneralParabolaOrdNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-40,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!10](O){\p}[0]{-1.5}{1.5}
+\pstGeneralParabola[linecolor=red!15](O){\p}[10]{-1.5}{1.5}
+\pstGeneralParabola[linecolor=red!25](O){\p}[30]{-1.5}{1.5}
+\pstGeneralParabola[linecolor=red!40](O){\p}[50]{-1.5}{1.5}
+\pstGeneralParabola[linecolor=red!60](O){\p}[90]{-1.5}{1.5}
+\pstGeneralParabolaNode[PosAngle=0,linecolor=blue!60](O){\p}[30]{1.0}{A}
+\pstGeneralParabolaAbsNode[PosAngle={0,0},linecolor=blue!60](O){\p}[30]{1.0}{D}{E}
+\pstGeneralParabolaAbsNode[PosAngle={0,0},linecolor=blue!60](O){\p}[50]{1.0}{F}{G}
+\pstGeneralParabolaAbsNode[PosAngle={0,0},linecolor=blue!60](O){\p}[90]{1.0}{H}{I}
+\pstGeneralParabolaOrdNode[PosAngle={90,0},linecolor=purple!60](O){\p}[30]{0.5}{U}{V}
+\pstGeneralParabolaOrdNode[PosAngle={90,90},linecolor=purple!60](O){\p}[50]{0.5}{M}{N}
+\pstGeneralParabolaOrdNode[PosAngle={90,-90},linecolor=purple!60](O){\p}[90]{0.5}{S}{T}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralParabolaFocusNode} is used to find the focus of the parabola,
+and the macro \Lcs{pstGeneralParabolaDirectrixLine} is used to find the directrix line of the parabola.
+
+\begin{BDef}
+\Lcs{pstGeneralParabolaFocusNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{F}\\
+\Lcs{pstGeneralParabolaDirectrixLine}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$L_x$}\Largb{$L_y$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!40](O){\p}[50]{-1.5}{1.5}
+\pstGeneralParabolaFocusNode[linecolor=red!40,PosAngle=90](O){\p}[50]{F}
+\pstLineAB[linestyle=dashed,linecolor=black!25,nodesepA=-0.5,nodesepB=-2.5]{O}{F}
+\pstGeneralParabolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PosAngle={-60,-60},PointName={L_1,L_2}](O){\p}[50]{L1}{L2}
+\pstGeneralParabolaNode[linecolor=red!60](O){\p}[50]{1.0}{A}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralParabolaLineInter} is used to find the intersections $C$ and $D$ of the parabola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstGeneralParabolaLineInter}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{A}\Largb{B}\Largb{C}\Largb{D}
+\end{BDef}
+
+When General Parabola becomes a Standard Parabola, the intersections with any kind of lines:
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!40](O){\p}[0]{-1.5}{1.5}
+\pstGeneralParabolaFocusNode[linecolor=red!40,PosAngle=50](O){\p}[0]{F}
+\pstLineAB[linestyle=dashed,linecolor=black!25,nodesepA=-0.2,nodesepB=-2.5]{O}{F}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.8]{1,0}{1,2}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={40,-90}](O){\p}[0]{1,0}{1,2}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=0]{0.5,0.5}{3.5,1}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={-110,-60}](O){\p}[0]{0.5,0.5}{3.5,1}{C}{D}
+\end{pspicture}
+\end{LTXexample}
+
+Here is the intersections of a real General Parabola with any kind of lines:
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(3,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-60,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!40](O){\p}[50]{-1.5}{1.5}
+\pstGeneralParabolaFocusNode[linecolor=red!40,PosAngle=80](O){\p}[50]{F}
+\pstLineAB[linestyle=dashed,linecolor=black!25,nodesepA=-0.2,nodesepB=-2.5]{O}{F}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.8]{1,-1}{1,3}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={-150,40}](O){\p}[50]{1,-1}{1,3}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=0.0]{-1,0}{3,2}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={90,70}](O){\p}[50]{-1,0}{3,2}{C}{D}
+% a line with gradient k=-\cos50/\sin50 parallel to OF
+\pstLineAS[linestyle=dashed,linecolor=gray!40,nodesep=-0.8,PointName=none,PointSymbol=none](0,1){50 cos 50 sin div neg}{X}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={-90,-90}](O){\p}[50]{0,1}{X}{E}{G}
+\end{pspicture}
+\end{LTXexample}
+
+When General Parabola becomes a Standard Inversion Parabola, the intersections with any kind of lines:
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-2)(3,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=0,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!40](O){\p}[90]{-1.5}{1.5}
+\pstGeneralParabolaFocusNode[linecolor=red!40,PosAngle=120](O){\p}[90]{F}
+\pstLineAB[linestyle=dashed,linecolor=black!25,nodesepA=-0.2,nodesepB=-2.5]{O}{F}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.8]{1,-1}{1,2}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={-60,60}](O){\p}[90]{1,-1}{1,2}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.8]{0,-1}{2,1}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={-90,5}](O){\p}[90]{0,-1}{2,1}{C}{D}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralParabolaPolarNode} is used to find the polar point $T$ of chord $AB$ on Parabola $P$.
+
+\begin{BDef}
+\Lcs{pstGeneralParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstGeneralParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largr{F}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstGeneralParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largr{F}\OptArg{$L_x$}\OptArg{$L_y$}\Largb{A}\Largb{B}\Largb{T}
+\end{BDef}
+
+We also use the theorem \ref{ParabolaPolarPointTheorem} to find the polar point $T$ of chord $AB$.
+If you don't know the focus $F$, or the directrix line, we will find them automated, otherwise you can pass them to this macro.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-2)(3,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-60,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!40](O){\p}[80]{-1.5}{1.5}
+\pstGeneralParabolaFocusNode[linecolor=red!40,PosAngle=200](O){\p}[80]{F}
+\pstGeneralParabolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PosAngle={0,0},PointName={L_x,L_y}](O){\p}[80]{Lx}{Ly}
+\pstLine[linestyle=dashed,linecolor=black!25,nodesepA=-0.2,nodesepB=-2.5]{O}{F}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.4]{0.5,-1.2}{2,1}
+\pstGeneralParabolaLineInter[linecolor=red!40,PosAngle={-60,90}](O){\p}[80]{0.5,-1.2}{2,1}{A}{B}
+%\pstGeneralParabolaPolarNode[linecolor=red!40,PosAngle=-90](O){\p}[80]{A}{B}{T}
+%\pstGeneralParabolaPolarNode[linecolor=red!40,PosAngle=-90](O){\p}[80](F){A}{B}{T}
+\pstGeneralParabolaPolarNode[linecolor=red!40,PosAngle=-90](O){\p}[80](F)[Lx][Ly]{A}{B}{T}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralParabolaTangentNode} is used to find the two nodes $A$ and $B$ on the Parabola through the point $T$.
+
+\begin{BDef}
+\Lcs{pstGeneralParabolaTangentNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{T}\Largb{A}\Largb{B}
+\end{BDef}
+
+We also use the theorem \ref{ParabolaTangentPointTheorem} to find the tangent node $A$ and $B$ of outside point $T$.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-2)(3,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=0,PointNameSep=0.2](2,0){O}
+\pstGeneralParabola[linecolor=red!40](O){\p}[80]{-1.5}{1.5}
+\pstGeonode[PosAngle=0](2.5,-0.5){R}(2.5,-0.2){T}(2.5,0.6){S}
+\pstGeneralParabolaTangentNode[linecolor=red!40,PosAngle={-90,220},PointName={R_1,R_2}](O){\p}[80]{R}{R1}{R2}
+\pstGeneralParabolaTangentNode[linecolor=red!40,PosAngle={-90,170},PointName={T_1,T_2}](O){\p}[80]{T}{T1}{T2}
+\pstGeneralParabolaTangentNode[linecolor=red!40,PosAngle={-90,180},PointName={S_1,S_2}](O){\p}[80]{S}{S1}{S2}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{General Inversion Parabola}
+The General Inversion Parabola $P$ with coordinate translation and rotation is defined by vertex $O$,
+the half of the focus chord axis $abs(p)$, the sign of $p$ indicates the direction of the parabola,
+and the rotation angle $\theta$ of the symmetrical axis.
+
+The equation can be got from the parametric function of the inversion parabola (\ref{ParametricFunctionOfStandardInversionParabola}),
+using the rotation transform formula (\ref{RotationTransformFormula}), then we have
+\begin{equation}
+\left\{\begin{array}{l}
+x'=(\dfrac{t^2}{2p}+x_0)\cos\theta-(t+y_0)\sin\theta=x_0'-t\sin\theta+t^2\dfrac{\cos\theta}{2p}\\
+y'=(\dfrac{t^2}{2p}+x_0)\sin\theta+(t+y_0)\cos\theta=y_0'+t\cos\theta+t^2\dfrac{\sin\theta}{2p}
+\end{array}\right.
+\end{equation}
+where the $x_0'$ and $y_0'$ are the coordinate of the given vertex O after rotation.
+So we get the parametric function of the General Inversion Parabola with coordinate translation and rotation as following:
+\begin{equation}\label{ParametricFunctionOfGeneralInversionParabola}
+\left\{\begin{array}{l}
+x=x_0-t\sin\theta+t^2\dfrac{\cos\theta}{2p}\\
+y=y_0+t\cos\theta+t^2\dfrac{\sin\theta}{2p}
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstGeneralIParabola} is used to draw a Standard Inversion Parabola from $y_1$ to $y_2$ with Vertex $O$,
+the half of the focus chord axis $abs(p)$.
+
+\begin{BDef}
+\Lcs{pstGeneralIParabola}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$y_1$}\Largb{$y_2$}
+\end{BDef}
+
+The macro \Lcs{pstGeneralIParabolaNode} is used to draw a node whose parameter is the given value $t$ on parabola,
+please refer to equation (\ref{ParametricFunctionOfGeneralInversionParabola}).
+The macro \Lcs{pstGeneralIParabolaAbsNode} is used to draw a node whose abscissa is the given value $x_1$ on parabola.
+The macro \Lcs{pstGeneralIParabolaOrdNode} is used to draw a node whose ordinate is the given value $y_1$ on parabola.
+
+Note that \Lcs{pstGeneralIParabolaAbsNode} and \Lcs{pstGeneralIParabolaOrdNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstGeneralIParabolaNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstGeneralIParabolaAbsNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstGeneralIParabolaOrdNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,0)(3,5)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=210,PointNameSep=0.2](0,2){O}
+\pstGeneralIParabola[linecolor=blue!10](O){\p}[0]{-1.5}{1.5}
+\pstGeneralIParabola[linecolor=blue!15](O){\p}[10]{-1.5}{1.5}
+\pstGeneralIParabola[linecolor=blue!25](O){\p}[30]{-1.5}{1.5}
+\pstGeneralIParabola[linecolor=blue!30](O){\p}[40]{-1.5}{1.5}
+\pstGeneralIParabola[linecolor=blue!40](O){\p}[50]{-1.5}{1.5}
+\pstGeneralIParabola[linecolor=blue!60](O){\p}[90]{-1.5}{1.5}
+\pstGeneralIParabolaNode[linecolor=red!60,PosAngle=90](O){\p}[30]{1.0}{A}
+\pstGeneralIParabolaNode[linecolor=red!60,PosAngle=170](O){\p}[50]{1.0}{B}
+\pstGeneralIParabolaAbsNode[linecolor=red!40,PosAngle={-45,90}](O){\p}[50]{1.0}{C}{D}
+\pstGeneralIParabolaAbsNode[linecolor=red!60,PosAngle={0,-90}](O){\p}[90]{1.0}{E}{F}
+\pstGeneralIParabolaOrdNode[linecolor=red!60,PosAngle={90,150}](O){\p}[50]{2.5}{G}{H}
+\pstGeneralIParabolaOrdNode[linecolor=blue!60,PosAngle={180,-90}](O){\p}[90]{2.5}{J}{K}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIParabolaFocusNode} is used to find the focus of the parabola,
+and the macro \Lcs{pstGeneralIParabolaDirectrixLine} is used to find the directrix line of the parabola.
+
+\begin{BDef}
+\Lcs{pstGeneralIParabolaFocusNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{F}\\
+\Lcs{pstGeneralIParabolaDirectrixLine}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{$L_x$}\Largb{$L_y$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,0)(2,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\psset{PointName=none,nodesepA=-2,nodesepB=-1}
+\pstGeonode(0,2){O}\def\p{0.8}
+\psset{linecolor=blue!60}
+\pstGeneralIParabola(O){\p}[0]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[0]{A}
+\pstGeneralIParabolaDirectrixLine(O){\p}[0]{A1}{A2}
+\psset{linecolor=red!60}
+\pstGeneralIParabola(O){\p}[45]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[45]{B}
+\pstGeneralIParabolaDirectrixLine(O){\p}[45]{B1}{B2}
+\psset{linecolor=green!60}
+\pstGeneralIParabola(O){\p}[90]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[90]{C}
+\pstGeneralIParabolaDirectrixLine(O){\p}[90]{C1}{C2}
+\psset{linecolor=cyan!60}
+\pstGeneralIParabola(O){\p}[135]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[135]{D}
+\pstGeneralIParabolaDirectrixLine(O){\p}[135]{D1}{D2}
+\psset{linecolor=purple!60}
+\pstGeneralIParabola(O){\p}[180]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[180]{E}
+\pstGeneralIParabolaDirectrixLine(O){\p}[180]{E1}{E2}
+\psset{linecolor=yellow!60}
+\pstGeneralIParabola(O){\p}[225]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[225]{F}
+\pstGeneralIParabolaDirectrixLine(O){\p}[225]{F1}{F2}
+\psset{linecolor=black!60}
+\pstGeneralIParabola(O){\p}[270]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[270]{G}
+\pstGeneralIParabolaDirectrixLine(O){\p}[270]{G1}{G2}
+\psset{linecolor=brown!60}
+\pstGeneralIParabola(O){\p}[315]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode(O){\p}[315]{H}
+\pstGeneralIParabolaDirectrixLine(O){\p}[315]{H1}{H2}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIParabolaLineInter} is used to find the intersections $C$ and $D$ of the parabola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstGeneralIParabolaLineInter}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{A}\Largb{B}\Largb{C}\Largb{D}
+\end{BDef}
+
+When $\theta=0$, the intersections with any kind of lines:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-2)(5,2)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=180,PointNameSep=0.2](2,0){O}
+\pstGeneralIParabola[linecolor=red!40](O){\p}[0]{-1.5}{1.5}
+\pstLine[linestyle=dashed,linecolor=gray!40]{3,-2}{3,2}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={40,150}](O){\p}[0]{3,-2}{3,2}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40]{2,-2}{4,2}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={100,210}](O){\p}[0]{2,-2}{4,2}{C}{D}
+\pstLine[linestyle=dashed,linecolor=gray!40]{1.5,0.5}{4.5,0.5}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={120,-90}](O){\p}[0]{1.5,0.5}{4.5,0.5}{E}{F}
+\end{pspicture}
+\end{LTXexample}
+
+When $\theta=50$, the intersections with any kind of lines:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-1)(5,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-70,PointNameSep=0.2](2,0){O}
+\pstGeneralIParabola[linecolor=red!40](O){\p}[50]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode[linecolor=red!40,PosAngle=80](O){\p}[50]{F}
+\pstLineAB[linestyle=dashed,linecolor=black!25,nodesepA=-0.2,nodesepB=-2.5]{O}{F}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.8]{3,-1}{3,3}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={-60,40}](O){\p}[50]{3,-1}{3,3}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=0.0]{2,3}{4,0}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={-10,170}](O){\p}[50]{2,3}{4,0}{C}{D}
+% a line with gradient k=\tan50 parallel to OF
+\pstLineAS[linestyle=dashed,linecolor=gray!40,nodesep=-0.8,PointName=none,PointSymbol=none](2,1){50 tan}{X}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={180,-90}](O){\p}[50]{2,1}{X}{E}{G}
+\end{pspicture}
+\end{LTXexample}
+
+When $\theta=90$, the intersections with any kind of lines:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,-1)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,0){O}
+\pstGeneralIParabola[linecolor=red!40](O){\p}[90]{-1.5}{1.5}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.5]{1,0}{1,2}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={180,-90}](O){\p}[90]{1,0}{1,2}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.5]{1,0}{3,1}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={-60,-90}](O){\p}[90]{1,0}{3,1}{C}{D}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-0.5]{0.8,2}{3,2}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={120,60}](O){\p}[90]{0.8,2}{3,2}{E}{G}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIParabolaPolarNode} is used to find the polar point $T$ of chord $AB$ on Parabola $P$.
+
+\begin{BDef}
+\Lcs{pstGeneralIParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstGeneralIParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largr{F}\Largb{A}\Largb{B}\Largb{T}\\
+\Lcs{pstGeneralIParabolaPolarNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largr{F}\OptArg{$L_x$}\OptArg{$L_y$}\Largb{A}\Largb{B}\Largb{T}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-1)(5,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=240,PointNameSep=0.4](2,0){O}
+\pstGeneralIParabola[linecolor=red!40](O){\p}[50]{-1.5}{1.5}
+\pstGeneralIParabolaFocusNode[linecolor=red!40,PosAngle=80](O){\p}[50]{F}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=0.0]{2,3}{4,0}
+\pstGeneralIParabolaLineInter[linecolor=red!40,PosAngle={-10,170}](O){\p}[50]{2,3}{4,0}{A}{B}
+\pstGeneralIParabolaPolarNode[linecolor=red!40,PosAngle=-90](O){\p}[50](F){A}{B}{T}
+\end{pspicture}
+\end{LTXexample}
+
+We also use the theorem \ref{ParabolaPolarPointTheorem} to find the polar point $T$ of chord $AB$.
+If you don't know the focus $F$, or the directrix line, we will find them automated, otherwise you can pass them to this macro.
+
+The macro \Lcs{pstGeneralIParabolaTangentNode} is used to find the two nodes $A$ and $B$ on the Parabola through the point $T$.
+
+\begin{BDef}
+\Lcs{pstGeneralIParabolaTangentNode}\OptArgs\Largr{O}\Largb{$p$}\OptArg{$\theta$}\Largb{T}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](1,-1)(5,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\p{0.4}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](2,0){O}
+\pstGeneralIParabola[linecolor=red!40](O){\p}[60]{-1.5}{1.5}
+\pstGeonode[PosAngle=-90](1,-1){R}(2,-1){T}(2.5,-1){S}
+\pstGeneralIParabolaTangentNode[linecolor=red!40,PosAngle={90,220},PointName={R_1,R_2}](O){\p}[60]{R}{R1}{R2}
+\pstGeneralIParabolaTangentNode[linecolor=red!40,PosAngle={160,60},PointName={T_1,T_2}](O){\p}[60]{T}{T1}{T2}
+\pstGeneralIParabolaTangentNode[linecolor=red!40,PosAngle={-60,40},PointName={S_1,S_2}](O){\p}[60]{S}{S1}{S2}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Standard Hyperbola}
+The Standard Hyperbola $H$ with coordinate translation is defined by center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$.
+The equation can be written as:
+\begin{equation}\label{FunctionOfStandardHyperbola}
+\dfrac{(x-x_0)^2}{a^2}-\dfrac{(y-y_0)^2}{b^2}=1
+\end{equation}
+and the parametric function can be written as:
+\begin{equation}\label{ParametricFunctionOfStandardHyperbola}
+\left\{\begin{array}{l}
+x=a\sec\alpha+x_0\\
+y=b\tan\alpha+y_0
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstHyperbola} is used to draw a Standard Hyperbola with Center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$.
+The parameter \texttt{angleX} is used to truncate the width of the figure,
+it should be setup from 0 to 90.
+
+\begin{BDef}
+\Lcs{pstHyperbola}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{angleX}
+\end{BDef}
+
+The macro \Lcs{pstHyperbolaNode} is used to draw a node whose parameter is the given value $t$ on Hyperbola,
+please refer to equation (\ref{ParametricFunctionOfStandardHyperbola}).
+The macro \Lcs{pstHyperbolaAbsNode} is used to draw the nodes whose abscissa are the given value $x_1$ on Hyperbola.
+The macro \Lcs{pstHyperbolaOrdNode} is used to draw the nodes whose ordinate are the given value $y_1$ on Hyperbola.
+
+Note that \Lcs{pstHyperbolaAbsNode} and \Lcs{pstHyperbolaOrdNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstHyperbolaNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstHyperbolaAbsNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstHyperbolaOrdNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](1,1){O}
+\pstHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstHyperbolaNode[linecolor=blue!40,PosAngle=90](O)(\a,\b){80}{A}
+\pstHyperbolaAbsNode[linecolor=blue!40,PointName={X_1,X_2},PosAngle=0](O)(\a,\b){0}{X1}{X2}
+\pstHyperbolaOrdNode[linecolor=blue!40,PointName={Y_1,Y_2},PosAngle=-90](O)(\a,\b){0}{Y1}{Y2}
+\pstHyperbola[linecolor=red!40](O)(\b,\a)[78]
+\pstHyperbolaNode[linecolor=red!40](O)(\b,\a){-75}{B}
+\pstHyperbolaAbsNode[linecolor=red!40,PointName={X_3,X_4},PosAngle=0](O)(\b,\a){0}{X3}{X4}
+\pstHyperbolaOrdNode[linecolor=red!40,PointName={Y_3,Y_4},PosAngle=-90](O)(\b,\a){0}{Y3}{Y4}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstHyperbolaFocusNode} is used to find the focus nodes of the Hyperbola,
+and the macro \Lcs{pstHyperbolaDirectrixLine} is used to find the directrix lines of the Hyperbola.
+
+\begin{BDef}
+\Lcs{pstHyperbolaFocusNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$F_1$}\Largb{$F_2$}\\
+\Lcs{pstHyperbolaDirectrixLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$L_x$}\Largb{$L_y$}\Largb{$R_x$}\Largb{$R_y$}
+\end{BDef}
+
+Note that you can use \Lcs{pstLineAS} to draw the asymptote line of the hyperbola by passing the slope gradient $k=\pm\dfrac{b}{a}$;
+or you can use the macro \Lcs{pstHyperbolaAsymptoteLine} to get them, this macro only create one node on each asymptote line,
+as the other one is the center of the hyperbola.
+
+\begin{BDef}
+\Lcs{pstHyperbolaAsymptoteLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$L_1$}\Largb{$L_2$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](1,1){O}
+\pstHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstHyperbolaNode[linecolor=blue!40](O)(\a,\b){80}{A}
+\pstLineAS[PointName=S_1,PosAngle=90,nodesepA=-3,nodesepB=-1.5,linecolor=blue!20]{O}{\b\space \a\space div}{S1}
+\pstLineAS[PointName=S_2,PosAngle=-90,nodesepA=-3,nodesepB=-1.5,linecolor=blue!20]{O}{\b\space \a\space div neg}{S2}
+\pstHyperbolaFocusNode[linecolor=blue!40,PointName={F_1,F_2},PosAngle={180,0}](O)(\a,\b){F1}{F2}
+\pstHyperbolaDirectrixLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PointName={1,2,3,4},PosAngle=90,PointNameSep=0.2](O)(\a,\b){Lx}{Ly}{Rx}{Ry}
+\pstHyperbola[linecolor=red!40](O)(\b,\a)[78]
+\pstHyperbolaFocusNode[linecolor=red!40,PointName={H_1,H_2},PosAngle={180,0}](O)(\b,\a){H1}{H2}
+\pstHyperbolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName={5,6,7,8},PosAngle=90,PointNameSep=0.2](O)(\b,\a){Mx}{My}{Nx}{Ny}
+\pstHyperbolaAsymptoteLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName={T_1,T_2},PosAngle=90,PointNameSep=0.2](O)(\b,\a){T1}{T2}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstHyperbolaLineInter} is used to find the intersections $C$ and $D$ of the hyperbola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstHyperbolaLineInter}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$A$}\Largb{$B$}\Largb{$C$}\Largb{$D$}
+\end{BDef}
+
+In the following example, the Line $CX$ and $CY$ are parallel to the asymptote of the hyperbola.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle={-90,90},PointNameSep=0.2](1,1){O}(1,1.5){C}
+\pstHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstLine[linestyle=dashed,linecolor=gray!40]{2,-1}{2,3}
+\pstHyperbolaLineInter[linecolor=blue!40,PosAngle={210,-40}](O)(\a,\b){2,-1}{2,3}{I}{J}
+\pstLineAS[linestyle=dashed,linecolor=gray!60,nodesep=-2,PosAngle=150]{1,1.5}{\b\space \a\space div}{X}
+\pstLineAS[linestyle=dashed,linecolor=gray!60,nodesep=-2,PosAngle=-10]{1,1.5}{\b\space \a\space div neg}{Y}
+\pstLineAS[linestyle=dashed,linecolor=gray!60,nodesep=-2,PosAngle=150]{1,1.5}{0.2}{Z}
+\pstHyperbolaLineInter[linecolor=blue!40,PosAngle={-10,-90}](O)(\a,\b){1,1.5}{X}{P}{Q}
+\pstHyperbolaLineInter[linecolor=blue!40,PosAngle={90,-30}](O)(\a,\b){1,1.5}{Y}{M}{N}
+\pstHyperbolaLineInter[linecolor=blue!40,PosAngle={90,90}](O)(\a,\b){1,1.5}{Z}{D}{E}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstHyperbolaPolarNode} is used to find the polar point $T$ of chord $AB$ on the hyperbola.
+
+\begin{BDef}
+\Lcs{pstHyperbolaPolarNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$A$}\Largb{$B$}\Largb{$T$}
+\end{BDef}
+
+We use the following theorem to find the polar point $T$ of chord $AB$:
+\begin{theorem}\label{HyperbolaPolarPointTheorem}
+Let $P$, $Q$ are vertex points of the hyperbola, for any chord $AB$ of hyperbola, suppose $PA$ and $BQ$ intersect at $E$,
+$PB$ and $AQ$ intersect at $F$, then the middle point $T$ of $EF$ is the polar point of chord $AB$.
+\end{theorem}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=90,PointNameSep=0.2](1,1){O}
+\pstHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstHyperbolaNode[linecolor=blue!40,PosAngle=80](O)(\a,\b){50}{A}
+\pstHyperbolaNode[linecolor=blue!40,PosAngle=-100](O)(\a,\b){-70}{B}
+\pstHyperbolaPolarNode[linecolor=red!40,PosAngle=-100](O)(\a,\b){A}{B}{T}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-1]{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstHyperbolaTangentNode} is used to find the tangent point $A$ and $B$ of point $T$ outside of the hyperbola.
+
+\begin{BDef}
+\Lcs{pstHyperbolaTangentNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$T$}\Largb{$A$}\Largb{$B$}
+\end{BDef}
+
+We use the following theorem to find the tangent points $A$ and $B$ of $T$:
+\begin{theorem}\label{HyperbolaTangentPointTheorem}
+Let $T$ is a point out of the hyperbola, for any two chords $TPQ$ and $TRS$ of the hyperbola, suppose $PR$ and $QS$ intersect at $X$,
+$RQ$ and $PS$ intersect at $Y$, then the intersection point $A$ and $B$ of $XY$ and the hyperbola are the tangent points from $T$.
+\end{theorem}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=90,PointNameSep=0.2](1,1){O}
+\pstHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstGeonode[PosAngle=-90](1.2,0.8){T}
+\pstHyperbolaTangentNode[linecolor=red!40,PosAngle={90,90},nodesep=-0.5](O)(\a,\b){T}{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Standard Inversion Hyperbola}
+The Standard Inversion Hyperbola $H$ with coordinate translation is defined by center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$.
+The equation can be written as:
+\begin{equation}\label{FunctionOfStandardInversionHyperbola}
+\dfrac{(y-y_0)^2}{a^2}-\dfrac{(x-x_0)^2}{b^2}=1
+\end{equation}
+and the parametric function can be written as:
+\begin{equation}\label{ParametricFunctionOfStandardInversionHyperbola}
+\left\{\begin{array}{l}
+x=b\tan\alpha+x_0\\
+y=a\sec\alpha+y_0
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstIHyperbola} is used to draw a Standard Inversion Hyperbola with Center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$.
+The parameter \texttt{angleY} is used to truncate the height of the figure,
+it should be setup from 0 to 90.
+
+\begin{BDef}
+\Lcs{pstIHyperbola}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{angleY}
+\end{BDef}
+
+The macro \Lcs{pstIHyperbolaNode} is used to draw a node whose parameter is the given value $t$ on Inversion Hyperbola,
+please refer to equation (\ref{ParametricFunctionOfStandardInversionHyperbola}).
+The macro \Lcs{pstIHyperbolaAbsNode} is used to draw the nodes whose abscissa are the given value $x_1$ on Inversion Hyperbola.
+The macro \Lcs{pstIHyperbolaOrdNode} is used to draw the nodes whose ordinate are the given value $y_1$ on Inversion Hyperbola.
+
+Note that \Lcs{pstIHyperbolaAbsNode} and \Lcs{pstIHyperbolaOrdNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstIHyperbolaNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstIHyperbolaAbsNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstIHyperbolaOrdNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}
+\pstGeonode[PosAngle=-90,PointNameSep=0.2](1,1){O}
+\pstIHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstIHyperbolaNode[linecolor=blue!40](O)(\a,\b){75}{A}
+\pstIHyperbolaAbsNode[linecolor=blue!40,PointName={Y_1,Y_2},PosAngle=0](O)(\a,\b){0}{Y1}{Y2}
+\pstIHyperbolaOrdNode[linecolor=red!40,PointName={X_1,X_2},PosAngle=-90](O)(\a,\b){0}{X1}{X2}
+\pstIHyperbola[linecolor=red!40](O)(\b,\a)[78]
+\pstIHyperbolaNode[linecolor=red!40](O)(\b,\a){-75}{B}
+\pstIHyperbolaAbsNode[linecolor=red!40,PointName={Y_3,Y_4},PosAngle=0](O)(\b,\a){0}{Y3}{Y4}
+\pstIHyperbolaOrdNode[linecolor=red!40,PointName={X_3,X_4},PosAngle=-90](O)(\b,\a){0}{X3}{X4}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIHyperbolaFocusNode} is used to find the focus nodes of the Inversion Hyperbola,
+and the macro \Lcs{pstIHyperbolaDirectrixLine} is used to find the directrix lines of the Inversion Hyperbola.
+
+\begin{BDef}
+\Lcs{pstIHyperbolaFocusNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$F_1$}\Largb{$F_2$}\\
+\Lcs{pstIHyperbolaDirectrixLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$L_x$}\Largb{$L_y$}\Largb{$R_x$}\Largb{$R_y$}
+\end{BDef}
+
+Note that you can use \Lcs{pstLineAS} to draw the asymptote line of the hyperbola by passing the slope gradient $k=\pm\dfrac{a}{b}$;
+or you can use the macro \Lcs{pstIHyperbolaAsymptoteLine} to get them, this macro only create one node on each asymptote line,
+as the other one is the center of the hyperbola.
+
+\begin{BDef}
+\Lcs{pstHyperbolaAsymptoteLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$L_1$}\Largb{$L_2$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}
+\pstGeonode[PosAngle=180,PointNameSep=0.2](1,1){O}
+\pstIHyperbola[linecolor=blue!40](O)(\a,\b)[80]
+\pstIHyperbolaFocusNode[linecolor=blue!40,PointName={F_1,F_2},PosAngle={-90,90}](O)(\a,\b){F1}{F2}
+\pstIHyperbolaDirectrixLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PointName={1,2,3,4},PosAngle=180,PointNameSep=0.2](O)(\a,\b){Lx}{Ly}{Rx}{Ry}
+\pstLineAS[PointName=S_1,PosAngle=90,nodesepA=-3,nodesepB=-1.5,linecolor=blue!20]{O}{\a\space \b\space div}{S1}
+\pstLineAS[PointName=S_2,PosAngle=-90,nodesepA=-3,nodesepB=-1.5,linecolor=blue!20]{O}{\a\space \b\space div neg}{S2}
+\pstIHyperbola[linecolor=red!40](O)(\b,\a)[78]
+\pstIHyperbolaFocusNode[linecolor=red!40,PointName={H_1,H_2},PosAngle={-90,90}](O)(\b,\a){H1}{H2}
+\pstIHyperbolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName={5,6,7,8},PosAngle=0,PointNameSep=0.2](O)(\b,\a){Mx}{My}{Nx}{Ny}
+\pstIHyperbolaAsymptoteLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName={T_1,T_2},PosAngle=90,PointNameSep=0.2](O)(\b,\a){T1}{T2}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIHyperbolaLineInter} is used to find the intersections $C$ and $D$ of the hyperbola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstIHyperbolaLineInter}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$A$}\Largb{$B$}\Largb{$C$}\Largb{$D$}
+\end{BDef}
+
+In the following example, the Line $CX$ and $CY$ are parallel to the asymptote of the hyperbola.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.35}
+\pstGeonode[PosAngle={0,180}](1,1){O}(0,1){C}
+\pstIHyperbola[linecolor=blue!40](O)(\a,\b)[82]
+\pstLine[linestyle=dashed,linecolor=gray!40]{2,-2}{2,4}
+\pstIHyperbolaLineInter[linecolor=blue!40,PosAngle={0,-30}](O)(\a,\b){2,-2}{2,4}{I}{J}
+\pstLineAS[linestyle=dashed,linecolor=gray!60,nodesep=-2,PosAngle=150]{0,1}{\a\space \b\space div}{X}
+\pstLineAS[linestyle=dashed,linecolor=gray!60,nodesep=-2,PosAngle=150]{0,1}{\a\space \b\space div neg}{Y}
+\pstLineAS[linestyle=dashed,linecolor=gray!60,nodesepA=-4,PosAngle=210]{0,1}{-3.5}{Z}
+\pstIHyperbolaLineInter[linecolor=blue!40,PosAngle={180,-100}](O)(\a,\b){0,1}{X}{P}{Q}
+\pstIHyperbolaLineInter[linecolor=blue!40,PosAngle={0,180}](O)(\a,\b){0,1}{Y}{M}{N}
+\pstIHyperbolaLineInter[linecolor=blue!40,PosAngle={190,-100}](O)(\a,\b){0,1}{Z}{D}{E}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIHyperbolaPolarNode} is used to find the polar point $T$ of chord $AB$ on the hyperbola.
+
+\begin{BDef}
+\Lcs{pstIHyperbolaPolarNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$A$}\Largb{$B$}\Largb{$T$}
+\end{BDef}
+
+We also use the theorem \ref{HyperbolaPolarPointTheorem} to find the polar point $T$ of chord $AB$:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(3,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=0,PointNameSep=0.2](1,1){O}
+\pstIHyperbola[linecolor=blue!40](O)(\a,\b)[76]
+\pstIHyperbolaNode[linecolor=blue!40,PosAngle=80](O)(\a,\b){50}{A}
+\pstIHyperbolaNode[linecolor=blue!40,PosAngle=-100](O)(\a,\b){-70}{B}
+\pstIHyperbolaPolarNode[linecolor=red!40,PosAngle=180](O)(\a,\b){A}{B}{T}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-1]{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstIHyperbolaTangentNode} is used to find the tangent point $A$ and $B$ of point $T$ outside of the hyperbola.
+
+\begin{BDef}
+\Lcs{pstIHyperbolaTangentNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\Largb{$T$}\Largb{$A$}\Largb{$B$}
+\end{BDef}
+
+We also use the following theorem \ref{HyperbolaTangentPointTheorem} to find the tangent points $A$ and $B$ of $T$.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=180](1,1){O}
+\pstIHyperbola[linecolor=blue!40](O)(\a,\b)[78]
+\pstGeonode[PosAngle=0](1.2,0.8){T}
+\pstIHyperbolaTangentNode[linecolor=red!40,PosAngle={80,-90},nodesep=-0.5](O)(\a,\b){T}{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{General Hyperbola}
+The General Hyperbola $H$ with coordinate translation and rotation is defined by center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$,
+and the rotation angle $\theta$ of the principal axis.
+The equation can be got from the parametric function of the Standard Hyperbola equation (\ref{ParametricFunctionOfStandardHyperbola}),
+using the rotation transform formula (\ref{RotationTransformFormula}), then we have
+\begin{equation}
+\left\{\begin{array}{l}
+x'=(a\sec\alpha+x_0)\cos\theta-(b\tan\alpha+y_0)\sin\theta=x_0'+a\sec\alpha\cos\theta-b\tan\alpha\sin\theta\\
+y'=(a\sec\alpha+x_0)\sin\theta+(b\tan\alpha+y_0)\cos\theta=y_0'+a\sec\alpha\sin\theta+b\tan\alpha\cos\theta
+\end{array}\right.
+\end{equation}
+where the $x_0'$ and $y_0'$ are the coordinate of the given center $O$ after rotation.
+So we get the parametric function of the General Hyperbola with coordinate translation and rotation as following:
+\begin{equation}\label{ParametricFunctionOfGeneralHyperbola}
+\left\{\begin{array}{l}
+x=x_0+a\sec\alpha\cos\theta-b\tan\alpha\sin\theta\\
+y=y_0+a\sec\alpha\sin\theta+b\tan\alpha\cos\theta
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstGeneralHyperbola} is used to draw a General Hyperbola with Center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$,
+and the rotation angle $\theta$ of the symmetrical axis.
+The parameter \texttt{angleX} is used to truncate the width of the figure,
+it should be setup from 0 to 90.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbola}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\OptArg{angleX}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=-90](1,1){O}
+\pstGeneralHyperbola[linecolor=red!20](O)(\a,\b)[0][80]
+\pstGeneralHyperbolaNode[linecolor=red!80,PosAngle=5](O)(\a,\b)[0]{0}{A}
+\pstGeneralHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeneralHyperbolaNode[linecolor=blue!40,PosAngle=10](O)(\a,\b)[40]{40}{B}
+\pstGeneralHyperbola[linecolor=green!60](O)(\a,\b)[90][80]
+\pstGeneralHyperbolaNode[linecolor=green!60,PosAngle=-90](O)(\a,\b)[90]{200}{C}
+\pstGeneralHyperbola[linecolor=purple!80](O)(\a,\b)[150][80]
+\pstGeneralHyperbolaNode[linecolor=purple!80,PosAngle=150](O)(\a,\b)[150]{50}{D}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralHyperbolaNode} is used to draw a node whose parameter is the given value $t$ on General Hyperbola,
+please refer to equation (\ref{ParametricFunctionOfGeneralHyperbola}).
+The macro \Lcs{pstGeneralHyperbolaAbsNode} is used to draw the nodes whose abscissa are the given value $x_1$ on General Hyperbola.
+The macro \Lcs{pstGeneralHyperbolaOrdNode} is used to draw the nodes whose ordinate are the given value $y_1$ on General Hyperbola.
+
+Note that \Lcs{pstGeneralHyperbolaAbsNode} and \Lcs{pstGeneralHyperbolaOrdNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstGeneralHyperbolaAbsNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstGeneralHyperbolaOrdNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=-90](1,1){O}
+\pstGeneralHyperbola[linecolor=purple!80](O)(\a,\b)[150][80]
+\pstGeneralHyperbolaAbsNode[linecolor=purple!80,PosAngle={200,90}](O)(\a,\b)[150]{2}{P}{Q}
+\pstGeneralHyperbolaAbsNode[linecolor=purple!80,PosAngle={-90,200}](O)(\a,\b)[150]{0}{X}{Y}
+\pstGeneralHyperbolaAbsNode[linecolor=purple!80,PosAngle={40,-40}](O)(\a,\b)[150]{0.59378}{M}{N}
+\pstLine[linestyle=dashed,linecolor=gray!40]{0.59378,-1}{0.59378,3}
+\pstGeneralHyperbolaOrdNode[linecolor=purple!80,PosAngle={200,90}](O)(\a,\b)[150]{2}{G}{H}
+\pstGeneralHyperbolaOrdNode[linecolor=purple!80,PosAngle={-90,200}](O)(\a,\b)[150]{0}{I}{J}
+\pstGeneralHyperbolaOrdNode[linecolor=purple!80,PosAngle={90,-90}](O)(\a,\b)[150]{1}{K}{L}
+\pstLine[linestyle=dashed,linecolor=gray!80,nodesep=-1.5]{K}{L}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralHyperbolaFocusNode} is used to find the focus nodes of the General Hyperbola,
+the macro \Lcs{pstGeneralHyperbolaVertexNode} is used to find the vertex nodes of the General Hyperbola,
+and the macro \Lcs{pstGeneralHyperbolaDirectrixLine} is used to find the directrix lines of the General Hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaFocusNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$F_1$}\Largb{$F_2$}\\
+\Lcs{pstGeneralHyperbolaVertexNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$V_1$}\Largb{$V_2$}\\
+\Lcs{pstGeneralHyperbolaDirectrixLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$L_x$}\Largb{$L_y$}\Largb{$R_x$}\Largb{$R_y$}
+\end{BDef}
+
+Note that you can use the macro \Lcs{pstGeneralHyperbolaAsymptoteLine} to get the asymptote lines, this macro only create one node on each asymptote line,
+as the other one is the center of the hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaAsymptoteLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$L_1$}\Largb{$L_2$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}
+\pstGeonode[PosAngle=180,PointNameSep=0.2](1,1){O}
+\pstGeneralHyperbola[linecolor=red!40](O)(\a,\b)[0][80]
+\pstGeneralHyperbolaFocusNode[linecolor=red!40,PointName={X_1,X_2},PosAngle={180,0}](O)(\a,\b)[0]{X1}{X2}
+\pstGeneralHyperbolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[0]{Lx}{Ly}{Rx}{Ry}
+\pstGeneralHyperbolaAsymptoteLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[0]{L1}{L2}
+\pstGeneralHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeneralHyperbolaFocusNode[linecolor=blue!40,PointName={F_1,F_2},PosAngle={220,40}](O)(\a,\b)[40]{F1}{F2}
+\pstGeneralHyperbolaDirectrixLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[40]{Dx}{Dy}{Ux}{Uy}
+\pstGeneralHyperbolaAsymptoteLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[40]{S1}{S2}
+\pstGeneralHyperbola[linecolor=brown!40](O)(\a,\b)[90][80]
+\pstGeneralHyperbolaFocusNode[linecolor=brown!40,PointName={Y_1,Y_2},PosAngle={-90,90}](O)(\a,\b)[90]{Y1}{Y2}
+\pstGeneralHyperbolaDirectrixLine[linecolor=brown!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[90]{Tx}{Ty}{Sx}{Sy}
+\pstGeneralHyperbolaAsymptoteLine[linecolor=brown!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[90]{T1}{T2}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralHyperbolaLineInter} is used to find the intersections $C$ and $D$ of the general hyperbola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaLineInter}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$A$}\Largb{$B$}\Largb{$C$}\Largb{$D$}
+\end{BDef}
+
+In the following example, the lines $YY'$ and $ZZ'$ are parallel to the asymptote of the hyperbola,
+so there are only one intersection $M$ and $P$ for each line, and the second node $N$ and $Q$ are put at the origin.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=-90](1,1){O}
+\pstGeneralHyperbola[linecolor=blue!40](O)(\a,\b)[30][80]
+\pstLine[linestyle=dashed,linecolor=gray!40]{0.5,-1}{0.5,3}
+\pstGeneralHyperbolaLineInter[linecolor=blue!40,PosAngle={-30,210}](O)(\a,\b)[30]{0.5,-1}{0.5,3}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40]{-2,0}{3,3}
+\pstGeneralHyperbolaLineInter[linecolor=blue!40,PosAngle={130,-90}](O)(\a,\b)[30]{-2,0}{3,3}{C}{D}
+\pstGeonode[PosAngle={0,100}](2,0){Y}(1,1.8){Z}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=gray!40,PointName=none,PointSymbol=none]{O}{\b\space \a\space div 1 atan 30 add}{U}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=red!40,PointName=none,PointSymbol=none]{O}{\b\space \a\space div neg 1 atan 30 add}{V}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=gray!40,PosAngle=-30]{Y}{\b\space \a\space div 1 atan 30 add}{Y'}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=red!40,PosAngle=80]{Z}{\b\space \a\space div neg 1 atan 30 add}{Z'}
+\pstGeneralHyperbolaLineInter[linecolor=blue!40,PosAngle={-50,-90}](O)(\a,\b)[30]{Z}{Z'}{M}{N}
+\pstGeneralHyperbolaLineInter[linecolor=blue!40,PosAngle={30,210}](O)(\a,\b)[30]{Y}{Y'}{P}{Q}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralHyperbolaPolarNode} is used to find the polar point $T$ of chord $AB$ on the general hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaPolarNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$A$}\Largb{$B$}\Largb{$T$}
+\end{BDef}
+
+We also use the theorem \ref{HyperbolaPolarPointTheorem} to find the polar point $T$ of chord $AB$:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(3,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=120,PointNameSep=0.2](1,1){O}
+\pstGeneralHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeneralHyperbolaNode[linecolor=blue!40,PosAngle=110](O)(\a,\b)[40]{50}{A}
+\pstGeneralHyperbolaNode[linecolor=blue!40,PosAngle=-100](O)(\a,\b)[40]{-70}{B}
+\pstGeneralHyperbolaPolarNode[linecolor=red!40,PosAngle=-90](O)(\a,\b)[40]{A}{B}{T}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-1]{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralHyperbolaTangentNode} is used to find the tangent point $A$ and $B$ of point $T$ outside of the general hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaTangentNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$T$}\Largb{$A$}\Largb{$B$}
+\end{BDef}
+
+We also use the following theorem \ref{HyperbolaTangentPointTheorem} to find the tangent points $A$ and $B$ of $T$.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=120](1,1){O}
+\pstGeneralHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeonode[PosAngle=-40](1.2,0.8){T}
+\pstGeneralHyperbolaTangentNode[linecolor=red!40,PosAngle={140,-90},nodesep=-0.5](O)(\a,\b)[40]{T}{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{General Inversion Hyperbola}
+The General Inversion Hyperbola $H$ with coordinate translation and rotation is defined by center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$,
+and the rotation angle $\theta$ of the principal axis.
+The equation can be got from the parametric function of the Standard Inversion Hyperbola equation (\ref{ParametricFunctionOfStandardInversionHyperbola}),
+using the rotation transform formula (\ref{RotationTransformFormula}), then we have
+\begin{equation}
+\left\{\begin{array}{l}
+x'=(b\tan\alpha+x_0)\cos\theta-(a\sec\alpha+y_0)\sin\theta=x_0'+b\tan\alpha\cos\theta-a\sec\alpha\sin\theta\\
+y'=(b\tan\alpha+x_0)\sin\theta+(a\sec\alpha+y_0)\cos\theta=y_0'+b\tan\alpha\sin\theta+a\sec\alpha\cos\theta
+\end{array}\right.
+\end{equation}
+where the $x_0'$ and $y_0'$ are the coordinate of the given center $O$ after rotation.
+So we get the parametric function of the General Inversion Hyperbola with coordinate translation and rotation as following:
+\begin{equation}\label{ParametricFunctionOfGeneralInversionHyperbola}
+\left\{\begin{array}{l}
+x=x_0+b\tan\alpha\cos\theta-a\sec\alpha\sin\theta\\
+y=y_0+b\tan\alpha\sin\theta+a\sec\alpha\cos\theta
+\end{array}\right.
+\end{equation}
+
+The macro \Lcs{pstGeneralIHyperbola} is used to draw a General Inversion Hyperbola with Center $O$,
+the half of the real axis $a$, the half of the imaginary axis $b$,
+and the rotation angle $\theta$ of the symmetrical axis.
+The parameter \texttt{angleY} is used to truncate the height of the figure,
+it should be setup from 0 to 90.
+
+\begin{BDef}
+\Lcs{pstGeneralIHyperbola}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\OptArg{angleY}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=-90](1,1){O}
+\pstGeneralIHyperbola[linecolor=red!20](O)(\a,\b)[0][80]
+\pstGeneralIHyperbolaNode[linecolor=red!80,PosAngle=-90](O)(\a,\b)[0]{0}{A}
+\pstGeneralIHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeneralIHyperbolaNode[linecolor=blue!40,PosAngle=190](O)(\a,\b)[40]{40}{B}
+\pstGeneralIHyperbola[linecolor=green!60](O)(\a,\b)[90][80]
+\pstGeneralIHyperbolaNode[linecolor=green!60,PosAngle=0](O)(\a,\b)[90]{200}{C}
+\pstGeneralIHyperbola[linecolor=purple!80](O)(\a,\b)[150][80]
+\pstGeneralIHyperbolaNode[linecolor=purple!80,PosAngle=-90](O)(\a,\b)[150]{50}{D}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIHyperbolaNode} is used to draw a node whose parameter is the given value $t$ on General Inversion Hyperbola,
+please refer to equation (\ref{ParametricFunctionOfGeneralInversionHyperbola}).
+
+The macro \Lcs{pstGeneralIHyperbolaAbsNode} is used to draw the nodes whose abscissa are the given value $x_1$ on General Inversion Hyperbola.
+The macro \Lcs{pstGeneralIHyperbolaOrdNode} is used to draw the nodes whose ordinate are the given value $y_1$ on General Inversion Hyperbola.
+
+Note that \Lcs{pstGeneralIHyperbolaAbsNode} and \Lcs{pstGeneralIHyperbolaOrdNode} will create two nodes $A$ and $B$ at most time.
+
+\begin{BDef}
+\Lcs{pstGeneralIHyperbolaNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$t$}\Largb{A}\\
+\Lcs{pstGeneralIHyperbolaAbsNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$x_1$}\Largb{A}\Largb{B}\\
+\Lcs{pstGeneralIHyperbolaOrdNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$y_1$}\Largb{A}\Largb{B}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=180](1,1){O}
+\pstGeneralIHyperbola[linecolor=purple!80](O)(\a,\b)[150][80]
+\pstGeneralIHyperbolaAbsNode[linecolor=purple!80,PosAngle={200,90}](O)(\a,\b)[150]{2}{P}{Q}
+\pstGeneralIHyperbolaAbsNode[linecolor=purple!80,PosAngle={90,200}](O)(\a,\b)[150]{0}{X}{Y}
+\pstGeneralIHyperbolaAbsNode[linecolor=purple!80,PosAngle={40,-40}](O)(\a,\b)[150]{1}{M}{N}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-1.5]{M}{N}
+\pstGeneralIHyperbolaOrdNode[linecolor=purple!80,PosAngle={180,90}](O)(\a,\b)[150]{2}{G}{H}
+\pstGeneralIHyperbolaOrdNode[linecolor=purple!80,PosAngle={90,240}](O)(\a,\b)[150]{0}{I}{J}
+\pstGeneralIHyperbolaOrdNode[linecolor=purple!80,PosAngle={-100,-60}](O)(\a,\b)[150]{1.4063}{K}{L}
+\pstLine[linestyle=dashed,linecolor=gray!80,nodesep=-1]{I}{J}
+\pstLine[linestyle=dashed,linecolor=gray!80,nodesep=-1]{-1,1.4063}{3,1.4063}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIHyperbolaFocusNode} is used to find the focus nodes of the General Inversion Hyperbola,
+the macro \Lcs{pstGeneralIHyperbolaVertexNode} is used to find the vertex nodes of the General Inversion Hyperbola,
+and the macro \Lcs{pstGeneralIHyperbolaDirectrixLine} is used to find the directrix lines of the General Inversion Hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralIHyperbolaFocusNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$F_1$}\Largb{$F_2$}\\
+\Lcs{pstGeneralIHyperbolaVertexNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$V_1$}\Largb{$V_2$}\\
+\Lcs{pstGeneralIHyperbolaDirectrixLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$L_x$}\Largb{$L_y$}\Largb{$R_x$}\Largb{$R_y$}
+\end{BDef}
+
+Note that you can use the macro \Lcs{pstGeneralIHyperbolaAsymptoteLine} to get the asymptote lines, this macro only create one node on each asymptote line,
+as the other one is the center of the hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaAsymptoteLine}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$L_1$}\Largb{$L_2$}
+\end{BDef}
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-2)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}
+\pstGeonode[PosAngle=180,PointNameSep=0.2](1,1){O}
+\pstGeneralIHyperbola[linecolor=red!40](O)(\a,\b)[0][80]
+\pstGeneralIHyperbolaFocusNode[linecolor=red!40,PointName={X_1,X_2},PosAngle={90,-90}](O)(\a,\b)[0]{X1}{X2}
+\pstGeneralIHyperbolaDirectrixLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[0]{Lx}{Ly}{Rx}{Ry}
+\pstGeneralIHyperbolaAsymptoteLine[linecolor=red!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[0]{T1}{T2}
+\pstGeneralIHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeneralIHyperbolaFocusNode[linecolor=blue!40,PointName={F_1,F_2},PosAngle={130,-40}](O)(\a,\b)[40]{F1}{F2}
+\pstGeneralIHyperbolaDirectrixLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[40]{Dx}{Dy}{Ux}{Uy}
+\pstGeneralIHyperbolaAsymptoteLine[linecolor=blue!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[40]{S1}{S2}
+\pstGeneralIHyperbola[linecolor=brown!40](O)(\a,\b)[90][80]
+\pstGeneralIHyperbolaFocusNode[linecolor=brown!40,PointName={Y_1,Y_2},PosAngle={180,0}](O)(\a,\b)[90]{Y1}{Y2}
+\pstGeneralIHyperbolaDirectrixLine[linecolor=brown!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[90]{Tx}{Ty}{Sx}{Sy}
+\pstGeneralIHyperbolaAsymptoteLine[linecolor=brown!40,nodesepA=-2,nodesepB=-1,PointName=none](O)(\a,\b)[90]{R1}{R2}
+\end{pspicture}
+\end{LTXexample}
+
+
+The macro \Lcs{pstGeneralIHyperbolaLineInter} is used to find the intersections $C$ and $D$ of the general inversion hyperbola and the given line $AB$.
+
+\begin{BDef}
+\Lcs{pstGeneralIHyperbolaLineInter}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$A$}\Largb{$B$}\Largb{$C$}\Largb{$D$}
+\end{BDef}
+
+In the following example, the lines $YY'$ and $ZZ'$ are parallel to the asymptote of the hyperbola,
+so there are only one intersection $M$ and $P$ for each line, and the second node $N$ and $Q$ are put at the origin.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=225](1,1){O}
+\pstGeneralIHyperbola[linecolor=blue!40](O)(\a,\b)[30][80]
+\pstLine[linestyle=dashed,linecolor=gray!40]{-1,-1}{-1,3}
+\pstGeneralIHyperbolaLineInter[linecolor=blue!40,PosAngle={-30,210}](O)(\a,\b)[30]{-1,-1}{-1,3}{A}{B}
+\pstLine[linestyle=dashed,linecolor=gray!40]{-2,1}{3,3}
+\pstGeneralIHyperbolaLineInter[linecolor=blue!40,PosAngle={130,-90}](O)(\a,\b)[30]{-2,1}{3,3}{C}{D}
+\pstGeonode[PosAngle={-20,100}](2,0){Y}(1.8,2){Z}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=gray!40,PointName=none,PointSymbol=none]{O}{\a\space \b\space div 1 atan 30 add}{U}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=red!40,PointName=none,PointSymbol=none]{O}{\a\space \b\space div neg 1 atan 30 add}{V}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=gray!40,PosAngle=10]{Y}{\a\space \b\space div 1 atan 30 add}{Y'}
+\pstLineAA[nodesepA=-3,nodesepB=-2,linecolor=red!40,PosAngle=80]{Z}{\a\space \b\space div neg 1 atan 30 add}{Z'}
+\pstGeneralIHyperbolaLineInter[linecolor=blue!40,PosAngle={30,-90}](O)(\a,\b)[30]{Z}{Z'}{M}{N}
+\pstGeneralIHyperbolaLineInter[linecolor=blue!40,PosAngle={30,210}](O)(\a,\b)[30]{Y}{Y'}{P}{Q}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIHyperbolaPolarNode} is used to find the polar point $T$ of chord $AB$ on the general inversion hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralIHyperbolaPolarNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$A$}\Largb{$B$}\Largb{$T$}
+\end{BDef}
+
+We also use the theorem \ref{HyperbolaPolarPointTheorem} to find the polar point $T$ of chord $AB$:
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-1,-1)(3,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=40,PointNameSep=0.2](1,1){O}
+\pstGeneralIHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeneralIHyperbolaNode[linecolor=blue!40,PosAngle=40](O)(\a,\b)[40]{50}{A}
+\pstGeneralIHyperbolaNode[linecolor=blue!40,PosAngle=-100](O)(\a,\b)[40]{-70}{B}
+\pstGeneralIHyperbolaPolarNode[linecolor=red!40,PosAngle=-90](O)(\a,\b)[40]{A}{B}{T}
+\pstLine[linestyle=dashed,linecolor=gray!40,nodesep=-1]{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
+The macro \Lcs{pstGeneralIHyperbolaTangentNode} is used to find the tangent point $A$ and $B$ of point $T$ outside of the general inversion hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralIHyperbolaTangentNode}\OptArgs\Largr{O}\Largr{$a,\,b$}\OptArg{$\theta$}\Largb{$T$}\Largb{$A$}\Largb{$B$}
+\end{BDef}
+
+We also use the following theorem \ref{HyperbolaTangentPointTheorem} to find the tangent points $A$ and $B$ of $T$.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](-2,-1)(4,3)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\def\a{0.5}\def\b{0.3}\psset{PointNameSep=0.3}
+\pstGeonode[PosAngle=20](1,1){O}
+\pstGeneralIHyperbola[linecolor=blue!40](O)(\a,\b)[40][80]
+\pstGeonode[PosAngle=-40](0,1){T}
+\pstGeneralIHyperbolaTangentNode[linecolor=red!40,PosAngle={-80,120},nodesep=-0.5](O)(\a,\b)[40]{T}{A}{B}
+\end{pspicture}
+\end{LTXexample}
+
\section{Geometric Transformations}
The geometric transformations are the ideal tools to construct geometric figures. All
@@ -686,7 +2766,7 @@ line crossing all images, and thus allow a quick description of a transformed fi
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath},
\Lkeyword{CodeFig}, \Lkeyword{CodeFigColor}, and \Lkeyword{CodeFigStyle}.
@@ -699,7 +2779,7 @@ following functions.
\begin{pspicture}[showgrid](-2,-2)(2,2)
\psset{CodeFig=true}
\pstGeonode[PosAngle={20,90,0}]{O}(-.6,1.5){A}(1.6,-.5){B}
-\pstSymO[CodeFigColor=blue,
+\pstSymO[CodeFigColor=blue,
PosAngle={-90,180}]{O}{A, B}[C, D]
\pstLineAB{A}{B}\pstLineAB{C}{D}
\pstLineAB{A}{D}\pstLineAB{C}{B}
@@ -713,7 +2793,7 @@ following functions.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath},
\Lkeyword{CodeFig}, \Lkeyword{CodeFigColor}, and \Lkeyword{CodeFigStyle}.
@@ -745,7 +2825,7 @@ Draws the symmetric point in relation to line $(AB)$.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath}, and \Lkeyword{RotAngle}
for \Lcs{pstRotation} and \Lkeyword{AngleCoef}, \Lkeyword{RotAngle} for \Lcs{pstAngleABC}.
@@ -770,13 +2850,13 @@ contain some text, it is put on the corresponding angle in mathematical mode.
\pstRotation[PosAngle=90,RotAngle=60,
CodeFig,CodeFigColor=blue,
TransformLabel=\frac{\pi}{3}]{A}{B}[C]
-\pstRotation[AngleCoef=.5,
+\pstRotation[AngleCoef=.5,
RotAngle=\pstAngleAOB{B}{A}{C},
CodeFigColor=red, CodeFig,
TransformLabel=\frac{1}{2}\widehat{BAC}]{A}{D}[E]
\end{pspicture}
\end{LTXexample}
-
+
\subsection{Translation}
@@ -785,7 +2865,7 @@ contain some text, it is put on the corresponding angle in mathematical mode.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath}, and \Lkeyword{DistCoef}
%
@@ -822,7 +2902,7 @@ text specified with \Lkeyword{TransformLabel} \DefaultVal{none}.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{HomCoef},
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath}, and \Lkeyword{HomCoef}.
@@ -852,7 +2932,7 @@ coefficient specified with the parameter \Lkeyword{HomCoef}.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath},
\Lkeyword{CodeFig}, \Lkeyword{CodeFigColor}, and\Lkeyword{CodeFigStyle}
@@ -911,7 +2991,7 @@ automatically put below the segment.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PosAngle},
\Lkeyword{PointSymbol}, and \Lkeyword{PtNameMath}
%
@@ -936,12 +3016,12 @@ Draw the $ABC$ triangle centre of gravity $G$.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PosAngle},
\Lkeyword{PointSymbol}, \Lkeyword{PtNameMath}, \Lkeyword{DrawCirABC}, \Lkeyword{CodeFig},
\Lkeyword{CodeFigColor}, \Lkeyword{CodeFigStyle}, \Lkeyword{SegmentSymbolA},
\Lkeyword{SegmentSymbolB}, and \Lkeyword{SegmentSymbolC}.
-%
+%
Draws the circle crossing three points (the circum circle) and put its center $O$.
The effective drawing is controlled by the boolean parameter \Lkeyword{DrawCirABC}
\DefaultVal{true}. Moreover the intermediate constructs (mediator lines) can
@@ -967,7 +3047,7 @@ points are marked on the segemnts using three different marks given by the param
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PosAngle},
\Lkeyword{PointSymbol}, \Lkeyword{PtNameMath}, \Lkeyword{CodeFig},
\Lkeyword{CodeFigColor}, \Lkeyword{CodeFigStyle}, and \Lkeyword{SegmentSymbol}.
@@ -1015,7 +3095,7 @@ construction is controlled by the following parameters:
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, and \Lkeyword{PtNameMath}.
%
@@ -1067,7 +3147,7 @@ manage the existence of these points.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, and \Lkeyword{PtNameMath}.
%
@@ -1110,11 +3190,11 @@ Draw the intersection point between lines $(AB)$ and $(CD)$.
\end{BDef}
\begin{sloppypar}
-Possible optional arguments are
+Possible optional arguments are
\Lkeyword{PointSymbol}, \Lkeyword{PosAngle},
\Lkeyword{PointName}, \Lkeyword{PointNameSep}, \Lkeyword{PtNameMath},
\Lkeyword{PointSymbolA}, \Lkeyword{PosAngleA}, \Lkeyword{PointNameA},
- \Lkeyword{PointSymbolB}, \Lkeyword{PosAngleB}, \Lkeyword{PointNameB},
+ \Lkeyword{PointSymbolB}, \Lkeyword{PosAngleB}, \Lkeyword{PointNameB},
\Lkeyword{Radius}, and \Lkeyword{Diameter}.
%
Draw the one or two intersection point(s) between the line $(AB)$ and
@@ -1177,7 +3257,7 @@ trigonometric (by default) or clockwise. Here is a first example.
\pstCircleOA[linecolor=red]{C}{B}
\pstInterCC[PosAngleA=135, CodeFigA=true, CodeFigAarc=false,
CodeFigColor=magenta]{O}{A}{C}{B}{D}{E}
-\pstInterCC[PosAngleA=170, CodeFigA=true,
+\pstInterCC[PosAngleA=170, CodeFigA=true,
CodeFigAarc=false,
CodeFigColor=green]{B}{E}{C}{B}{F}{G}
\end{pspicture}
@@ -1304,23 +3384,23 @@ of centre $O$ and radius $OA$.
Calculates and prints the values. This is only possible on PostScript level!
-\begin{pspicture}[showgrid](-1,0)(11,8)
+\begin{pspicture}[showgrid](-1,-1)(8,7)
\def\sideC{6} \def\sideA{7} \def\sideB{8}
-\psset{PointSymbol=none,linejoin=1,linewidth=0.4pt,PtNameMath=false,labelsep=0.07,MarkAngleRadius=1.1,decimals=1,comma}
-\pstGeonode[PosAngle={90,90}](0,0){A}(\sideC;10){B}
-\psset{PointName=}
-\pstInterCC[RadiusA=\pstDistVal{\sideB},RadiusB=\pstDistVal{\sideA},PosAngle=-90,PointNameA=C]{A}{}{B}{}{C}{C-}
+\psset{unit=0.8cm,PointSymbol=none,linejoin=1,linewidth=0.4pt,PtNameMath=false,labelsep=0.07,MarkAngleRadius=1.1,decimals=1}
+\pstGeonode[PosAngle={-90,-90}](0,0){A}(\sideC;10){B}
+\pstInterCC[RadiusA=\pstDistVal{\sideB},RadiusB=\pstDistVal{\sideA},PosAngleA=90,PointNameA=C]{A}{}{B}{}{C}{C-}
\pstInterCC[RadiusA=\pstDistAB{A}{B},RadiusB=\pstDistAB{B}{C}]{C}{}{A}{}{D-}{D}
+\psset{PointName=none}
\pstInterLC[Radius=\pstDistAB{A}{C}]{C}{D}{C}{}{A'-}{A'}
\pstInterCC[RadiusA=\pstDistAB{A}{B},RadiusB=\pstDistAB{B}{C}]{A'}{}{C}{}{B'}{B'-}
-\pstInterLL[PosAngle=90,PointName=default]{B'}{C}{A}{B}{E}
+\pstInterLL[PosAngle=-90,PointName=default]{B'}{C}{A}{B}{E}
\pspolygon(A)(B)(C)
\pspolygon[fillstyle=solid,fillcolor=magenta,opacity=0.1](C)(E)(B)
%
-\psGetAngleABC[ArcColor=blue,AngleValue=true,LabelSep=0.7,arrows=->,decimals=0,PSfont=Palatino-Roman](B)(A)(C){}
-\psGetAngleABC[AngleValue=true,ArcColor=red,arrows=->,WedgeOpacity=0.6,WedgeColor=yellow!30,LabelSep=0.5](C)(B)(A){$\beta$}
-\psGetAngleABC[LabelSep=0.7,WedgeColor=green,xShift=-6,yShift=-10](A)(C)(B){$\gamma$}
-\psGetAngleABC[LabelSep=0.7,AngleArc=false,WedgeColor=green,arrows=->,xShift=-15,yShift=0](C)(E)(B){\color{blue}$\gamma$}
+\psGetAngleABC[ArcColor=blue,AngleValue=true,LabelSep=0.4,arrows=->,decimals=0,PSfont=Palatino-Roman](B)(A)(C){}
+\psGetAngleABC[AngleValue=true,ArcColor=red,arrows=->,WedgeOpacity=0.6,WedgeColor=yellow!30,LabelSep=0.4](C)(B)(A){$\beta$}
+\psGetAngleABC[LabelSep=0.4,AngleValue=true,WedgeColor=green,xShift=-6,yShift=-10](A)(C)(B){$\gamma$}
+\psGetAngleABC[LabelSep=0.4,AngleValue=true,AngleArc=false,WedgeColor=green,arrows=->,xShift=-15,yShift=0](C)(E)(B){\color{blue}$\gamma$}
\psGetAngleABC[AngleValue=true,MarkAngleRadius=1.0,LabelSep=0.5,ShowWedge=false,xShift=-5,yShift=7,arrows=->](E)(B)(C){}
%
\pcline[linestyle=none](A)(B)\nbput{\sideC}
@@ -1330,19 +3410,13 @@ Calculates and prints the values. This is only possible on PostScript level!
\psGetDistanceAB[xShift=-17,decimals=2](E)(C){MEC}
\end{pspicture}
-
-
-
-
\begin{lstlisting}
\begin{pspicture}(-1,0)(11,8)
\psgrid[gridlabels=0pt,subgriddiv=2,gridwidth=0.4pt,subgridwidth=0.2pt,gridcolor=black!60,subgridcolor=black!40]
\def\sideC{6} \def\sideA{7} \def\sideB{8}
\psset{PointSymbol=none,linejoin=1,linewidth=0.4pt,PtNameMath=false,labelsep=0.07,MarkAngleRadius=1.1,decimals=1,comma}
-\pstGeonode[PosAngle={90,90}](0,0){A}(\sideC;10){B}
-% \pstGeonode[PosAngle={225,-75}](0,0){A}(\sideC;10){B}
-\psset{PointName=}
-\pstInterCC[RadiusA=\pstDistVal{\sideB},RadiusB=\pstDistVal{\sideA},PosAngle=-90,PointNameA=C]{A}{}{B}{}{C}{C-}
+\pstGeonode[PosAngle={-90,-90}](0,0){A}(\sideC;10){B}
+\pstInterCC[RadiusA=\pstDistVal{\sideB},RadiusB=\pstDistVal{\sideA},PosAngle=90,PointNameA=C]{A}{}{B}{}{C}{C-}
\pstInterCC[RadiusA=\pstDistAB{A}{B},RadiusB=\pstDistAB{B}{C}]{C}{}{A}{}{D-}{D}
\pstInterLC[Radius=\pstDistAB{A}{C}]{C}{D}{C}{}{A'-}{A'}
\pstInterCC[RadiusA=\pstDistAB{A}{B},RadiusB=\pstDistAB{B}{C}]{A'}{}{C}{}{B'}{B'-}
@@ -1350,10 +3424,10 @@ Calculates and prints the values. This is only possible on PostScript level!
\pspolygon(A)(B)(C)
\pspolygon[fillstyle=solid,fillcolor=magenta,opacity=0.1](C)(E)(B)
%
-\psGetAngleABC[ArcColor=blue,AngleValue=true,LabelSep=0.7,arrows=->,decimals=0,PSfont=Palatino-Roman](B)(A)(C){}
+\psGetAngleABC[ArcColor=blue,AngleValue=true,LabelSep=0.8,arrows=->,decimals=0,PSfont=Palatino-Roman](B)(A)(C){}
\psGetAngleABC[AngleValue=true,ArcColor=red,arrows=->,WedgeOpacity=0.6,WedgeColor=yellow!30,LabelSep=0.5](C)(B)(A){$\beta$}
-\psGetAngleABC[LabelSep=0.7,WedgeColor=green,xShift=-6,yShift=-10](A)(C)(B){$\gamma$}
-\psGetAngleABC[LabelSep=0.7,AngleArc=false,WedgeColor=green,arrows=->,xShift=-15,yShift=0](C)(E)(B){\color{blue}$\gamma$}
+\psGetAngleABC[LabelSep=0.8,WedgeColor=green,xShift=-6,yShift=-10](A)(C)(B){$\gamma$}
+\psGetAngleABC[LabelSep=0.8,AngleArc=false,WedgeColor=green,arrows=->,xShift=-15,yShift=0](C)(E)(B){\color{blue}$\gamma$}
\psGetAngleABC[AngleValue=true,MarkAngleRadius=1.0,LabelSep=0.5,ShowWedge=false,xShift=-5,yShift=7,arrows=->](E)(B)(C){}
%
\pcline[linestyle=none](A)(B)\nbput{\sideC}
@@ -1697,7 +3771,7 @@ Drawing of Manuel Luque.
\pstBissectBAC[PointSymbol=none,PointName=none]{C}{A}{B}{AB}
\pstBissectBAC[PointSymbol=none,PointName=none]{A}{B}{C}{BB}
\pstBissectBAC[PointSymbol=none,PointName=none]{B}{C}{A}{CB}
-\pstInterLL{A}{AB}{B}{BB}{I}
+\pstInterLL{A}{AB}{B}{BB}{I}
\psset{linecolor=magenta, linestyle=dashed} \pstProjection{A}{B}{I}[I_C]
\pstLineAB{I}{I_C}\pstRightAngle[linestyle=solid]{A}{I_C}{I}
\pstProjection{A}{C}{I}[I_B]
@@ -1842,7 +3916,7 @@ distance of two points (the focus) is constant.
\begin{LTXexample}
\begin{pspicture}[showgrid](-4,-4)(4,4)
\newcommand\Sommet{1.4142135623730951 } \newcounter{i} \setcounter{i}{1}
-\newcommand\PosFoyer{2 } \newcommand\HypAngle{0}
+\newcommand\PosFoyer{2 } \newcommand\HypAngle{0}
\newcounter{CoefDiv}\setcounter{CoefDiv}{20}
\newcounter{Inc}\setcounter{Inc}{2} \newcounter{n}\setcounter{n}{2}
\newcommand\Ri{ \PosFoyer \Sommet sub \arabic{i}\space\arabic{CoefDiv}\space div add }
@@ -1933,7 +4007,7 @@ is an astroid, a deltoid and in the general case hypo-cycloids.
\begin{pspicture}[showgrid](-3.5,-3.4)(3.5,4)
\HypoCyclo[3]{3}{1}{17}
\psset{linecolor=blue,linewidth=1.5\pslinewidth}
-\pstGenericCurve[GenCurvFirst=P]{N}{1}{6}
+\pstGenericCurve[GenCurvFirst=P]{N}{1}{6}
\pstGenericCurve{N}{6}{12}
\pstGenericCurve[GenCurvLast=P]{N}{12}{17}
\end{pspicture}