如何在数学表达式中局部指定函数范围

如何在数学表达式中局部指定函数范围

我正在创建简单的坐标变换以便\tdplotsetcoord在笛卡尔坐标系中定义坐标。
梅威瑟:

\documentclass[a4paper,fleqn,leqno]{article}
\usetikzlibrary{arrows.meta,decorations.markings}
\usepackage{tikz,tikz-3dplot}
\begin{document}
\begin{tikzpicture}[cm={-1,-1,1,0,(0,0)},x=3.85mm,z=-1cm]
\draw[-{Classical TikZ Rightarrow[scale=1.2]},very thick] (-2,0,0) -- (5,0,0) node[anchor=north,xshift=-3pt] {$x$}; 
\draw[-{Classical TikZ Rightarrow[scale=1.2]},very thick] (0,-2,0) -- (0,5,0) node[anchor=west] {$y$};
\draw[-{Classical TikZ Rightarrow[scale=1.2]},very thick] (0,0,-2) -- (0,0,5) node[anchor=south] {$z$};
\def\Xx{-2} \def\Xy{1} \def\Xz{4}
\tdplotsetcoord{X}{sqrt((\Xx)^(2) + (\Xy)^(2) + (\Xz)^(2))}{acos(\Xz/(sqrt((\Xx)^(2) + (\Xy)^(2) + (\Xz)^(2))))}{asin(\Xy/(sqrt((\Xx)^(2) + (\Xy)^(2))))} % {ρ}{θ}{Φ}
\draw[-{Stealth[scale=1.5,width=3pt]},color=gray,semithick] (0,0,0) -- (X);
\draw[dashed,color=red] (0,0,0) -- (Xxy);
\draw[dashed,color=red] (Xxy) -- (X);
\end{tikzpicture}
\end{document}  

球面坐标radius ρpolar angle θ工作正常(在它们的整个范围内运行),但asimuthal angle Φ显然不是 - 它将x我的 CC 中的负值视为正值。因此,每个转换为 SC 的坐标都具有非负值x
问题也可能在范围内arcsine。它可能只在总的一部分上运行。我知道我必须asin根据符号组合定义更广泛的范围x,y才能获得总asimuthal angle Φ范围(max - min = 2\pi)。
问题 1:我想知道如何才能找到 Latex 的默认范围asin
问题2:我怎样才能(粗略地)定义arcsine我所说的更广泛的范围?我希望代码尽可能简单。
谢谢。

答案1

arcsin函数的范围为从-pi/2pi/2弧度或-9090度。后者由pgf包使用。这回答了您的第一个问题。

要计算笛卡尔点的极角(这里最好称为方位角)(x,y),可以使用以下公式:

在此处输入图片描述

此极角的范围是从-pipi-180度到180度。可以将360度数添加到负数中以仅获得正值,但这与应用程序无关。在代码中,这给出:

\documentclass[a4paper,fleqn,leqno]{article}
\usepackage{tikz,tikz-3dplot}
\usetikzlibrary{arrows.meta,decorations.markings}

\begin{document}
\begin{tikzpicture}[cm={-1,-1,1,0,(0,0)},x=3.85mm,z=-1cm]
  \draw[-{Classical TikZ Rightarrow[scale=1.2]},very thick] (-2,0,0) -- (5,0,0) node[anchor=north,xshift=-3pt] {$x$};
  \draw[-{Classical TikZ Rightarrow[scale=1.2]},very thick] (0,-2,0) -- (0,5,0) node[anchor=west] {$y$};
  \draw[-{Classical TikZ Rightarrow[scale=1.2]},very thick] (0,0,-2) -- (0,0,5) node[anchor=south] {$z$};
  \def\Xx{-2} \def\Xy{1} \def\Xz{4}
  %
  \pgfmathsetmacro\radius{sqrt(\Xx*\Xx + \Xy*\Xy + \Xz*\Xz)}%
  \pgfmathsetmacro\azimuth{acos(\Xx/sqrt(\Xx*\Xx+\Xy*\Xy))}% part 1
  \pgfmathsetmacro\azimuth{ifthenelse(\Xy<0,-\azimuth,\azimuth)}% part 2
  \tdplotsetcoord{X}
    {\radius}
    {acos(\Xz/\radius)}
    {\azimuth}
  %
  \draw[-{Stealth[scale=1.5,width=3pt]},color=gray,semithick] (0,0,0) -- (X);
  \draw[dashed,color=red] (0,0,0) -- (Xxy);
  \draw[dashed,color=red] (Xxy) -- (X);
\end{tikzpicture}
\end{document}

这样,输出就是:

在此处输入图片描述

相关内容