作为提出的问题的应用如何给星星添加发光效果
考虑一下代码
\documentclass{book}
\textheight 8.5in \textwidth 5.75in
\usepackage{tikz}
\usetikzlibrary{fadings, calc}
\tikzfading[name=dim fade, inner color=transparent!50, outer color=transparent!100]
\tikzfading[name=bright fade, right color=transparent!100, left color=transparent!100, middle color=transparent!0]
\newcommand{\glowstar}[2][.5]{\fill[white,path fading=dim fade](#2)circle[radius=#1*.4];
\foreach \t in {0,60,120}{
\fill[rotate around={\t:(#2)}, white,path fading=bright fade]($(#2)-(.9*#1,0)$)--($(#2)-(0,.02*#1)$)--($(#2)+(.9*#1,0)$)--($(#2)+(0,.02*#1)$)--cycle;
\fill[rotate around={\t:(#2)}, white,path fading=bright fade]($(#2)-(.3*#1,0)$)--($(#2)-(0,.04*#1)$)--($(#2)+(.3*#1,0)$)--($(#2)+(0,.04*#1)$)--cycle;}
\fill[white] (#2)circle[radius=#1*.075];
}
\begin{document}
\begin{center}
\begin{tikzpicture}
\fill[blue!25!black] rectangle (16,12);
\glowstar[0.8]{8,10}
\glowstar[0.8]{4,6}
\glowstar[0.8]{12,6}
\end{tikzpicture}
\end{center}
\end{document}
产生
显示的三颗星与笛卡尔点 (8,6) 的距离均相等(4 个单位)。在这种情况下,我想以逆时针方向每隔 15 度绘制一个发光星半圆(可能大小各异),从笛卡尔点 (12,6) 开始,到笛卡尔点 (4,6) 结束。
此外,我希望避免计算这些点的笛卡尔坐标,然后绘制它们,就像我对(更容易计算的)三个显示的星星所做的那样。
在我看来,极坐标系下的东西会更简单、更轻松;例如 ---
问题:我如何才能首先固定一个点,比如 MWE 中的笛卡尔点 (8,6),然后绘制点 (4,0)、(4,15)、(4,30)、(4,45)、...、(4,150)、(4,165)、(4, 180),这些极点的纵坐标以度为单位?这可能吗?还有更好的方法吗?
我正在寻找一种通用方法,通过该方法我可以固定一个点,然后根据一种不依赖于指定相关的笛卡尔坐标的方法绘制一组星星。
谢谢。
答案1
我对宏做了一点小改动,要求参数用括号\glowstar[0.8]{(8,10)}
代替\glowstar[0.8]{8,10}
。这可能更好,因为它允许你使用极坐标,例如,\glowstar[0.8]{(60:5)}
然后,您可以使用foreach
循环和语法($(8,6)+(\k:2)$)
来绘制星星。calc
此“添加坐标”语法所需的包已加载。混合使用直角坐标和极坐标是可以的。
\documentclass{book}
\textheight 8.5in \textwidth 5.75in
\usepackage{tikz}
\usetikzlibrary{fadings, calc}
\tikzfading[name=dim fade, inner color=transparent!50, outer color=transparent!100]
\tikzfading[name=bright fade, right color=transparent!100, left color=transparent!100, middle color=transparent!0]
\newcommand{\glowstar}[2][.5]{\fill[white,path fading=dim fade]#2circle[radius=#1*.4];
\foreach \t in {0,60,120}{
\fill[rotate around={\t:#2}, white,path fading=bright fade]($#2-(.9*#1,0)$)--($#2-(0,.02*#1)$)--($#2+(.9*#1,0)$)--($#2+(0,.02*#1)$)--cycle;
\fill[rotate around={\t:#2}, white,path fading=bright fade]($#2-(.3*#1,0)$)--($#2-(0,.04*#1)$)--($#2+(.3*#1,0)$)--($#2+(0,.04*#1)$)--cycle;}
\fill[white] #2circle[radius=#1*.075];
}
\begin{document}
\begin{center}
\begin{tikzpicture}
\fill[blue!25!black] rectangle (16,12);
\foreach \k in {0,15,...,180}{
\glowstar[0.8]{($(8,6)+(\k:2)$)}}
\end{tikzpicture}
\end{center}
\end{document}