我正在尝试在 TikZ 中绘制水滴。这是我目前的代码:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[
left color=blue!50,
right color=cyan!30,
shading angle=130,
draw=none,
rounded corners,
line join=round]
(0,0) ++ (30:1) arc (30:-210:1)
to[rounded corners=0,bend right=5] (90:1.5)
to[bend right=0] cycle;
\end{tikzpicture}
\end{document}
输出如下:
正如您所注意到的,有一个奇怪的效果:我用红色圈出了一个小“支线”。奇怪的是,水滴是完全对称的。并不是角度太紧,左侧看起来不错。更奇怪的是,经过一些尝试后,可以选择to
(而不是--
)使用 连接到路径的开头cycle
总是导致这种支线,即使bend left
或bend right
不存在。如果我将路径代码更改为:
(0,0) ++ (30:1) arc (30:-210:1) -- (90:1.5) -- cycle;
那么问题就消失了,但是我失去了bend right
我想要的效果。
知道发生了什么事吗?这真是令人困惑。
答案1
我认为问题是由于尝试打开rounded corners
和关闭而导致的。具体来说,rounded corners
只对下拉顶部的一侧有效。
以下是一些替代方案:
\documentclass[tikz,multi,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[
left color=blue!50,
right color=cyan!30,
shading angle=130,
draw=none,
line join=round
]
(30:1) arc (30:-210:1)
[out=60, in=-100] to (90:1.5)
[out=-80, in=120] to cycle;
\begin{scope}[xshift=2.25cm]
\draw[
left color=blue!50,
right color=cyan!30,
shading angle=130,
draw=none,
line join=round
]
(30:1) arc (30:-210:1)
.. controls +(.25,.5) and +(-.35,-.65) .. (90:1.5)
.. controls +(.35,-.65) and +(-.25,.5) .. cycle;
\end{scope}
\end{tikzpicture}
\end{document}
答案2
问题出在最后一行to[bend right=0] cycle
,删除这一行就去掉了支线。这意味着最后一行是“多余的”,至少从快速分析来看是这样的。
不过说实话,你建造的落差真的很奇怪。我的意思是你基本上是从山脊开始,画一个弧线,然后顶部部分再次在山脊上闭合。从顶部开始不是更简单吗?
此外,由于重力的原因,水滴具有一种细长的形状,所以弧线可能不是最现实的选择。
我创建了另一个 drop,以便与原始的修复版本进行比较。
输出
代码
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% original
\draw[
left color=blue!50,
right color=cyan!30,
shading angle=130,
draw=none,
rounded corners,
line join=round]
(30:1) arc (30:-210:1)
to[rounded corners=0,bend right=5] (90:1.5)
%to[bend right=0] cycle
;
% Alenanno's version :D
\begin{scope}[xshift=3cm]
\fill[
left color=blue!50,
right color=cyan!30,
shading angle=130,
rounded corners=2mm]
(0,1.5)
to[bend right=1] ++ (.6,-.7)
to[out=-60,in=-120, looseness=6] (-.6,.8)
to[bend right=1] cycle;
\end{scope}
\end{tikzpicture}
\end{document}