挑战
今天我想提出一个特别的 TikZ 挑战。我偶然发现了以下图片:
它浓缩了大量的信息:每一行代表着对相应天体的一次任务!
问题
是否可以使用 TikZ 重现此图形?仅带环的行星就足够了,这只是一个概念证明。
理由
如果我看着这些线条,我就会想,这是多么艰苦的过程。对我来说,它尖叫着:自动化。而这正是 TikZ 所擅长的。
答案1
作为概念证明...
\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{calc}
\def\Earth#1#2{ % 1: pos, 2: size
\draw (#1) node[left color=blue!20!cyan, right color=blue!80!black, circle, minimum size=#2cm, inner sep=0pt] (Earth) {};
}
\def\Moon#1#2{ %1: pos, 2: size
\draw (#1) node[left color=black!10, right color=black!50, circle, minimum size=#2cm, inner sep=0pt] (Moon) {};
}
\begin{tikzpicture}
\fill[black] (0,0) rectangle (8,6);
\Earth{1,1}{0.8};
\Moon{5,4}{0.4};
\foreach \i in {1,...,35} {
\pgfmathsetmacro{\tint}{\i*100/35};
\draw[thick, red!\tint!yellow] (Moon) circle(0.2+\i/20);
}
\foreach \i in {1,...,35} {
\pgfmathsetmacro{\a}{-\i/2};
\draw[ultra thick, black] (Earth.\a) .. controls +(2,0-\i/20) and +(-3+\i/20,0) .. ($(Moon)+(-90:0.2+\i/20)$);
}
\foreach \i in {1,...,35} {
\pgfmathsetmacro{\tint}{\i*100/35};
\pgfmathsetmacro{\a}{-\i/2};
\draw[thick, red!\tint!yellow] (Earth.\a) .. controls +(2,0-\i/20) and +(-3+\i/20,0) .. ($(Moon)+(-90:0.2+\i/20)$);
}
\end{tikzpicture}
\end{document}
可能的改进:
- 用于
\includegraphics{}
行星的真实图像 - 定义一组命名的颜色,如
journey 1 color
,journey 2 color
等,以便每条路径都可以用任意颜色绘制,而不是我使用的从黄色到红色的渐变色。 - 用下个月的时间完成这个图形,并手动调整计算贝塞尔控制点位置的公式中的神奇数字,以使其看起来美观。