我搜索了很久,但还是没能找到解决问题的方法。我想用 LaTeX 中的 tikz 画一个平行四边形。然后,我想沿着平行四边形的边(不是水平/垂直的,而是某种程度上的对角线)对平行四边形进行着色。我只找到了水平/垂直着色平行四边形的可能性,与平行四边形的方向无关。
答案1
一种使用基本迭代技巧的选项,用于制作假阴影,但它是纯二维的,如果你想要一个真正的三维结果,你必须看到 Asymptote 来获得这样的结果如何在乳胶中创建喇叭圆环?此外,pgf-plots 还允许管理表面颜色,例如示例_171.pdf。
梅威瑟:
% arara: pdflatex: {synctex: yes, action: nonstopmode}
% arara: animate: {density: 200, delay: 20, other: -background white -alpha remove}
% arara: showanimate
\documentclass[tikz,border=20pt]{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{calc}
\usetkzobj{all}
\begin{document}
\foreach \A in {0,1,...,15,14,13,...,0}{
\begin{tikzpicture}
% Set limits.
\tkzInit[xmax=7,xmin=-2,ymax=4, ymin=-3.5]
\tkzGrid[sub,color=blue!20!,subxstep=.5,subystep=.5]
\tkzClip
%Define principal points.
\tkzDefPoint(\A*0.05,-1+\A*0.1){A}
\tkzDefPoint(2-\A*0.2,-\A*0.15){B}
\tkzDefPoint(3+\A*0.08,2-\A*0.1){C}
\tkzDefLine[parallel=through C](B,A) \tkzGetPoint{D}
%Label the points
\tkzLabelPoints[color=blue,below=5pt](A,B)
\tkzLabelPoints[color=blue,above=5pt](C,D)
% Draw all the shades.
\foreach \i in {0,1,...,30}{
\node(m) at ($(D)!\i/30!(A)$){};
\node(n) at ($(C)!\i/30!(B)$){};
\fill [blue, fill opacity=1/30]
(A) -- (m.center) -- (n.center) -- (B) -- cycle;
}
%Draw the segments
\tkzDrawSegments[thick](A,B B,C C,D D,A)
\end{tikzpicture}}
\end{document}
PSD:它生成一个带有动画帧的 pdf 文档,然后转换成我使用的 .gifImagemagick 转换器
答案2
使用 键,shading angle=<>
您可以按任意方向旋转阴影。如果您需要更精细的控制,您还可以定义自己的阴影,有关此内容,请参阅 tikz 手册第 109.3 节。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\node[trapezium, draw,trapezium left angle=120, trapezium right angle=60,shade,shading=axis,shading angle=100] at (0,0) {};
\end{tikzpicture}
\end{document}
答案3
PSTricks 解决方案。
\documentclass[pstricks,border=10mm]{standalone}
\begin{document}
\foreach \i in {0,10,...,170}{%
\begin{pspicture}(6,4)
\pspolygon[fillstyle=vlines,hatchangle=\i](0,0)(4,0)(6,4)(2,4)
\rput*(3,2){$\i^\circ$}
\end{pspicture}}
\end{document}
另一个版本
\documentclass[pstricks,border=10mm]{standalone}
\begin{document}
\foreach \i in {0,10,...,80}{%
\begin{pspicture}(6,4)
\pspolygon[fillstyle=crosshatch,hatchcolor=red,hatchangle=\i](0,0)(4,0)(6,4)(2,4)
\rput*(3,2){$\i^\circ$}
\end{pspicture}}
\end{document}