我正在嘗試用 tikz 繪製雙曲線的單一分支,我在這個論壇的這篇文章中發現了一個很棒的腳本(@DouglasMencken):這個帖子
\documentclass[tikz, margin=10]{standalone}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric} % for shape=ellipse
\usetikzlibrary{calc}
\begin{document}
\def\tikzscale{0.8}
\begin{tikzpicture}[scale=\tikzscale]
\tikzset{
elli/.style args={#1:#2and#3}{
draw,
shape=ellipse,
rotate=#1,
minimum width=2*#2,
minimum height=2*#3,
outer sep=0pt,
}
}
%
% #1 optional parameters for \draw
% #2 angle of rotation in degrees
% #3 offset of center as (pointx, pointy) or (name-o-coordinate)
% #4 length of plus (semi)axis, that is axis which hyperbola crosses
% #5 length of minus (semi)axis
% #6 how much of hyperbola to draw in degrees, with 90 you’d reach infinity
%
\newcommand\tikzhyperbola[6][thick]{%
\draw [#1, rotate around={#2: (0, 0)}, shift=#3]
plot [variable = \t, samples=1000, domain=-#6:#6] ({#4 / cos( \t )}, {#5 * tan( \t )});
}
\def\angle{90}
\def\bigaxis{1.5cm}
\def\smallaxis{1.5cm}
\coordinate (center) at (0, 0);
\node [scale=\tikzscale, elli=\angle:\bigaxis and \smallaxis, line width = 1.2pt, color=black, dotted] at (center) (e) {};
\draw [-{stealth}, line width = 1.2pt, color = orange] ([shift={(\angle:-12)}] e.center) -- ([shift={(\angle:12)}] e.center) node [above right] {$\bm{a}_1$};
\draw [-{stealth}, line width = 1.2pt, color = orange] ([shift={(90+\angle:-8)}] e.center) -- ([shift={(90+\angle:8)}] e.center) node [above left] {$\bm{a}_2$};
\tikzhyperbola[line width = 1.2pt, color=blue!80!black]{\angle}{(center)}{\bigaxis}{\smallaxis}{77}
\pgfmathsetmacro\axisratio{\smallaxis / \bigaxis}
% asymptotes
\def\lengthofasymptote{15}
\draw [color=black!40, line width = 0.4pt, rotate around={\angle + atan( \axisratio ): (center)}]
($ (-\lengthofasymptote, 0) + (center) $) -- ++(2*\lengthofasymptote, 0) ;
\draw [color=black!40, line width = 0.4pt, rotate around={\angle - atan( \axisratio ): (center)}]
($ (-\lengthofasymptote, 0) + (center) $) -- ++(2*\lengthofasymptote, 0) ;
\end{tikzpicture}
\end{document}
但是,正如您所看到的:我只對繪製圖表的上半部分感興趣,這只是一個分支:我不知道如何獲得這一點,因為我最終得到了一個非常大的軸(我不明白構建軸a_1 和a_2 的機制)。例如,如果我只想要漸近線的上部並將 lengthasymptote = 0 作為第一個座標:整個圖形向右移動。
任何幫助我們理解這個腳本以獲得所需結果的幫助將不勝感激,因為它看起來非常優雅和乾淨,
謝謝。