diff options
author | Karl Berry <karl@freefriends.org> | 2019-10-20 20:57:52 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-10-20 20:57:52 +0000 |
commit | eae6041fbc51527923fdca5ad56e362572fbe940 (patch) | |
tree | cb88961c87432a13ad3505983b922f63b5a6a69f /Master/texmf-dist/doc | |
parent | 5ab5adbe90601f0d4b513e15f6d16b9129ed26a1 (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/Changes | 13 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf | bin | 543319 -> 1189759 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex | 2288 |
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 Binary files differindex 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 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} |