Tikz的绘图上很多人进行了大胆地尝试,实际,只要想得到的,认真思考都会很好地实现出来,这里分享一个咖啡杯的例子。
代码实现:
% Coffee cup
% Author: Mark Wibrow
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\tikzfading[name=fade out,
inner color=transparent!0, outer color=transparent!100]
\begin{document}
\begin{tikzpicture}
\foreach \c [count=\i from 0] in {white,red!75!black,blue!25,orange}{
\tikzset{xshift={mod(\i,2)*3cm}, yshift=-floor(\i/2)*3cm}
\colorlet{cup}{\c}
% Saucer
\begin{scope}[shift={(0,-1-1/16)}]
\fill [black!87.5, path fading=fade out]
(0,-2/8) ellipse [x radius=6/4, y radius=3/4];
\fill [cup, postaction={left color=black, right color=white, opacity=1/3}]
(0,0) ++(180:5/4) arc (180:360:5/4 and 5/8+1/16);
\fill [cup, postaction={left color=black!50, right color=white, opacity=1/3}]
(0,0) ellipse [x radius=5/4, y radius=5/8];
\fill [cup, postaction={left color=white, right color=black, opacity=1/3}]
(0,1/16) ellipse [x radius=5/4/2, y radius=5/8/2];
\fill [cup, postaction={left color=black, right color=white, opacity=1/3}]
(0,0) ellipse [x radius=5/4/2-1/16, y radius=5/8/2-1/16];
\end{scope}
% Handle
\begin{scope}[shift=(10:7/8), rotate=-30, yslant=1/2, xslant=-1/8]
\fill [cup, postaction={top color=black, bottom color=white, opacity=1/3}]
(0,0) arc (130:-100:3/8 and 1/2) -- ++(0,1/4) arc (-100:130:1/8 and 1/4)
-- cycle;
\fill [cup, postaction={top color=white, bottom color=black, opacity=1/3}]
(0,0) arc (130:-100:3/8 and 1/2) -- ++(0,1/32) arc (-100:130:1/4 and 1/3)
-- cycle;
\end{scope}
% Cup
\fill [cup!25!black, path fading=fade out]
(0,-1-1/16) ellipse [x radius=3/4, y radius=1/3];
\fill [cup, postaction={left color=black, right color=white, opacity=1/3/2},
postaction={bottom color=black, top color=white, opacity=1/3/2}]
(-1,0) arc (180:360:1 and 5/4);
\fill [cup, postaction={left color=white, right color=black, opacity=1/3}]
(0,0) ellipse [x radius=1, y radius=1/2];
\fill [cup, postaction={left color=black, right color=white, opacity=1/3/2},
postaction={bottom color=black, top color=white, opacity=1/3/2}]
(0,0) ellipse [x radius=1-1/16, y radius=1/2-1/16];
% Coffee
\begin{scope}
\clip ellipse [x radius=1-1/16, y radius=1/2-1/16];
\fill [brown!25!black]
(0,-1/4) ellipse [x radius=3/4, y radius=3/8];
\fill [brown!50!black, path fading=fade out]
(0,-1/4) ellipse [x radius=3/4, y radius=3/8];
\end{scope}
}
\end{tikzpicture}
\end{document}
选自:http://texample.net/tikz/examples/coffee-cup/


发表评论 取消回复