|
前两天在 kuing.cjhb.site/forum.php?mod=redirect&goto=findpost&ptid=3572&pid=15141 里面的这个图:

如果用tikz的话,应该怎么画比较好?
我目前的代码比较笨重,如下:- \begin{tikzpicture}%[scale=]
- \def\zdbl{0.3}
- \coordinate [label=-90:$P$] (P) at (0,0);
- \coordinate [label=-90:$A_1$] (A1) at (-1,0);
- \coordinate [label=-90:$A_2$] (A2) at (1,0);
- \coordinate [label=45:$A_3$] (A3) at ($(A2)+(72:2)$);
- \coordinate [label=90:$A_4$] (A4) at ($(A3)+(2*72:2)$);
- \coordinate [label=180:$A_5$] (A5) at ($(A4)+(3*72:2)$);
- \coordinate (X) at ($(A3)+(2,0)$);
- \coordinate (Y) at ($(X)+(72:2)$);
- \coordinate (Z) at ($(Y)+(2,0)$);
- \coordinate (W) at ($(Z)+(72:2)$);
- \coordinate (T) at ($(Z)!\zdbl!(W)$);
- \coordinate (B1) at (intersection of P--T and A2--A3);
- \coordinate (C2) at (intersection of P--T and A3--X);
- \coordinate (C3) at (intersection of P--T and X--Y);
- \coordinate (C4) at (intersection of P--T and Y--Z);
- \fill[gray!25] (P)--(W)--(Z)--cycle;
- \draw (A1)--(A2)--(A3)--(A4)--(A5)--cycle;
- \draw[dashed] (A2)
- \foreach \i in {1,2,3,4} {--++(-108+\i*72:2)}
- \foreach \i in {1,2,3,4} {--++(180-\i*72:2)}
- \foreach \i in {1,2,3,4} {--++(-108+\i*72:2)}
- \foreach \i in {1,2,3,4} {--++(180-\i*72:2)};
- \path let \p2 = ($(C2)-(A3)$),
- \n2 = {veclen(\x2,\y2)},
- \p3 = ($(C3)-(X)$),
- \n3 = {veclen(\x3,\y3)},
- \p4 = ($(C4)-(Y)$),
- \n4 = {veclen(\x4,\y4)}
- in
- coordinate (B2) at ($(A3)+(2*72:\n2)$)
- coordinate (B3) at ($(A4)+(3*72:\n3)$)
- coordinate (B4) at ($(A5)+(4*72:\n4)$);
- \coordinate (B5) at ($(A1)!\zdbl!(A2)$);
- \draw (P)--(B1)--(B2)--(B3)--(B4)--(B5);
- \draw[dashed] (T)--(B1);
- \end{tikzpicture}
复制代码 其中最开头的 \def\zdbl{0.3} 是最终点的比例,调整它,就可以产生不同的反射路线。
效果图:
大家看看能不能再优化一下。 |
|