将阴影绘制到平面上

将阴影绘制到平面上

我想要画一些类似这样的图:

在此处输入图片描述

由于阴影是弯曲的,我决定画一个梯形,然后在其上画一个阴影。问题是我想要梯形角的坐标。这是我的代码

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\usetikzlibrary{shadows}
\usetikzlibrary{shapes.symbols}
\definecolor{mycolor}{rgb}{0.55,0.9,0.55}
\begin{document}
\begin{tikzpicture}[y=.3cm, x=1.2cm,font=\sffamily]
%\node[circle,fill=black] at (0,0) {};
\node[circle,fill=black] at (5.59,-8.3) {};
\node[circle,fill=black] at (-2.1,-8.3) {};
\node[circle,fill=black] at (-5.59,8.3) {};
%rotate = -140
\node[trapezium, minimum width=10cm,trapezium left angle=130, trapezium right angle=50, minimum height = 5cm,fill=mycolor]  at (0,0){};

\filldraw[fill=gray]
(5.55,-8.3) -- (5.55,-8) -- (-2.1,-8) -- (-5.6,8) -- (-5.59,8.3) -- (-2.1,-8.3) -- cycle;

\end{tikzpicture}
\end{document}

我尝试通过在任意位置画圆圈来找出坐标,然后手动纠正它们。

有没有办法准确地找到这些坐标?我是不是在想一个很难的方法,有没有一种简单的方法可以做到这一点?

答案1

您可以在图片定义内绘制形状,然后使用该图片在任意位置/比例/角度重复使用该图形。此pic功能需要最新版本的 Tikz/PGF。

以下是一个例子:

\documentclass{article}
\usepackage{tikz}

\tikzset{
  patch/.pic = {
    \draw[fill=green!30] (-2,0) to[out=10, in=190] (0,1)
            to (2,0)
            to[out=-140, in=45] (0,-1)
            to[out=145, in=-35] (-2,0)
            -- cycle;
    \draw[fill=black!60] (0,-1) 
            to[out=145, in=-35] (-2,0)
            -- (-2,-.2) -- (0,-1.5) -- cycle;
    \draw[fill=black!30] (2,0)        
            to[out=-140, in=45] (0,-1)
            -- (0,-1.5) -- (2, -.2) -- cycle;
    },
}  

\begin{document}
\begin{tikzpicture}
\pic at (0,0) {patch};
\pic[scale=0.5, rotate=20] at (2,2) {patch};
\pic[scale=0.5, rotate=-20] at (-2,2) {patch};
\end{tikzpicture}
\end{document}

结果如下:

结果

相关内容