
Latex代码如下:
% A Christmas tree
% Decorations by Andrew Stacey
% Based on a fractal tree (L-System) drawn in TikZ by Stefan Kottwitz
% Tree example from the book "The Science of fractal images" by Peitgen and Saupe.
documentclass{article}
usepackage{tikz}
usetikzlibrary{%
lindenmayersystems,
decorations.pathmorphing,
decorations.markings,
shapes.geometric,
calc%
}
tikzset{
tinsel/.style={
#1,
rounded corners=10mm,
ultra thin,
decorate,
decoration={
snake,
amplitude=.1mm,
segment length=10,
}
},
baubles/.style={
decorate,
decoration={
markings,
mark=between positions .3 and 1 step 2cm
with
{
pgfmathsetmacro{brad}{2 + .5 * rand}
path[shading=ball,ball color=#1] (0,0) circle[radius=brad mm];
}
}
},
lights/.style={
decorate,
decoration={
markings,
mark=between positions 0 and 1 step 1cm
with
{
pgfmathparse{rand > 0 ? "dart" : "kite"}
letlshapepgfmathresult
pgfmathsetmacro{tint}{100*rnd}
node[rotate=90,lshape,shading=ball,inner sep=1pt,ball color=red!tint!yellow] {};
}
}
}
}
begin{document}
begin{tikzpicture}
coordinate (star) at (0,-1);
path (star) +(-50:7) coordinate (rhs) +(-130:7) coordinate (lhs);
draw[brown!50!black,line width=5mm,line cap=round] (star) ++(-90:6.8) -- ++(0,-1) coordinate (base);
node[scale=-1,trapezium,fill=black,minimum size=1cm] at (base) {};
foreach height/colour in {%
.2/blue,
.4/yellow,
.6/red,
.8/orange,
1/pink%
} {
draw[tinsel=colour] ($(star)!height!(lhs)$) to[bend right] ($(star)!height!(rhs)$);
}
path (star);
pgfgetlastxy{starx}{stary}
begin{scope}[xshift=starx,yshift=stary,yshift=-7cm]
draw[color=green!50!black, l-system={rule set={S -> [+++G][---G]TS, G -> +H[-G]L, H -> -G[+H]L, T -> TL, L -> [-FFF][+FFF]F}, step=4pt, angle=18, axiom=+++++SLFFF, order=11}] lindenmayer system -- cycle;
end{scope}
foreach height/colour in {%
.1/pink,
.3/red,
.5/yellow,
.7/blue,
.9/orange%
} {
draw[tinsel=colour] ($(star)!height!(lhs)$) to[bend right] ($(star)!height!(rhs)$);
}
foreach height in {.15,.35,...,1} {
draw[lights] ($(star)!height!(lhs)$) to[bend right] ($(star)!height!(rhs)$);
}
foreach angle/colour in {
-50/red,
-70/yellow,
-90/blue,
-110/pink,
-130/purple%
} {
draw[baubles=colour] (star) -- ++(angle:7);
}
node[star,star point ratio=2.5,fill=yellow,minimum size=1cm] at (star) {};
end{tikzpicture}
end{document}








Recent Comments