我正在尝试用球面坐标绘制一些图,但在计算 PGFPLOTS 中的一些数字时遇到了问题。
我在这里添加了一个 MWE:
\documentclass[12pt]{standalone}
\usepackage[pdftex]{graphicx}
\usepackage{amsmath}
\usepackage{tikz,pgfplots}
\begin{document}
% compute angles
\pgfmathsetmacro\a{-pi/5}
\pgfmathsetmacro\b{pi/10}
\pgfmathsetmacro\phil{\a-\b}
\pgfmathsetmacro\phih{\a+\b}
\pgfmathsetmacro\thetal{\a-\b}
\pgfmathsetmacro\thetah{\a+\b}
\pgfmathsetmacro\s{cos(\thetal)*sin(\phil)}
% this should be about -0.476
\pgfmathprintnumber{\s}
\end{document}
结果如下:
我应该得到 $-0.4755282581475768$
答案1
sin
并cos
希望它们的参数以度为单位。但它们也可以通过附加以弧度表示r
(手册,第 94.3.4 节)。
\documentclass[12pt]{standalone}
\usepackage[pdftex]{graphicx}
\usepackage{amsmath}
\usepackage{tikz,pgfplots}
\begin{document}
% compute angles
% \pgfmathsetmacro\a{-180/5}
% \pgfmathsetmacro\b{180/10}
\pgfmathsetmacro\a{-pi/5 r}
\pgfmathsetmacro\b{pi/10 r}
\pgfmathsetmacro\phil{\a-\b}
\pgfmathsetmacro\phih{\a+\b}
\pgfmathsetmacro\thetal{\a-\b}
\pgfmathsetmacro\thetah{\a+\b}
\pgfmathsetmacro\s{cos(\thetal)*sin(\phil)}
% this should be about -0.476
\pgfmathprintnumber{\s}
\end{document}
答案2
对我来说,我宁愿选择xfp 封装由于它具有广泛的功能列表,并且能够处理大数运算,因此无需这样的限制。
\documentclass[12pt,border=5mm]{standalone}
\usepackage{amsmath}
\usepackage{xfp,siunitx}
\begin{document}
% compute angles
\edef\a{-pi/5}
\edef\b{pi/10}
\edef\phil{\a-\b}
\edef\phih{\a+\b}
\edef\thetal{\a-\b}
\edef\thetah{\a+\b}
\edef\s{\fpeval{cos(\thetal)*sin(\phil)}}
% this should be about -0.476
\num{\s}
\end{document}
答案3
一个肮脏又过于复杂的伎俩
% xop.tex
% run
% pdflatex xop.tex
% asy xop-*.asy
% pdflatex xop.tex
\documentclass[12pt]{standalone}
\usepackage[pdftex]{graphicx}
\usepackage{amsmath}
\usepackage{tikz,pgfplots}
\usepackage[inline]{asymptote}
\begin{document}
\gdef\setasy#1{\gdef\s{#1}}
\pgfmathsetmacro\s{0}
\begin{asy}
// compute angles
real a=-pi/5;
real b=pi/10;
real phil=a-b;
real phih=a+b;
real thetal=a-b;
real thetah=a+b;
real s=cos(thetal)*sin(phil);
tex("\setasy{"+string(s)+"}");
\end{asy}
\pgfmathprintnumber{\s} (\s)
\end{document}