我使用的代码来自 TikZ/PGF 中的维纳斯之舞(及其变奏)
我在用着
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
draw for t=0 upto 359: 108 dir 13t - 147 dir 8t .. endfor cycle;
endfig;
\end{mplibcode}
\end{document}
它绘制了地心系统中行星的舞蹈。它工作得很好,但数字太小了。当我试图绘制海王星和冥王星的舞蹈时,它不起作用。
海王星
轨道周期 - 163.7:1(比例)
海王星到太阳的距离 - 44.742 亿公里 - 缩放至 4474
冥王星
轨道周期 - 247.9:1(比例)
海王星到太阳的距离 - 59.06 亿公里 - 5906 比例
因此,当我尝试绘制海王星的舞蹈时,它不起作用
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
draw for t=0 upto 359: 4474 dir 1t - 147 dir 164t .. endfor cycle;
endfig;
\end{mplibcode}
\end{document}
有人能帮我吗?:)
也许我应该使用不同的比例或别的什么?
我几乎拥有所有行星的舞蹈,但只缺少 3 个:
朱诺
海王星
冥王星
行星概况介绍(NASA)
https://nssdc.gsfc.nasa.gov/planetary/factsheet/planet_table_ratio.html
答案1
首先,你需要允许luamplib
处理大数字(大于 4096),因此添加这个
\mplibnumbersystem{double}
添加到文档的序言部分。(参见这个Q有关选项的更多详细信息)。但是,你会发现结果看起来有点奇怪,因为路径上没有足够的点来制作平滑的曲线。所以你需要做这样的事情:
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibnumbersystem{double}
\begin{mplibcode}
beginfig(1);
numeric s; s = 1/8;
draw for t=0 step s until 360 - s: 4474 dir 1t - 147 dir 164t .. endfor cycle;
endfig;
\end{mplibcode}
\end{document}
这样看起来会更好,但是数字会很大,因此您可能需要直接缩放它:
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibnumbersystem{double}
\begin{mplibcode}
beginfig(1);
numeric s; s = 1/8;
draw (for t=0 step s until 360 - s: 4474 dir 1t - 147 dir 164t .. endfor cycle) scaled 1/32;
endfig;
\end{mplibcode}
\end{document}
笔记:您需要编译它,lualatex
以便可以使用该luamplib
库。