|
楼主 |
kuing
发表于 2019-7-11 20:13
这个区别是下午和 585 聊斜二测坐标系作图时发现的,讨论过程中的发现还不止这一样,下面继续扯……
为方便起见先定义一个临时命令:- \newcommand\tmpxieerce[2][]{%
- \begin{tikzpicture}[x={(-135:0.5cm)},y={(1cm,0)},z={(0,1cm)},#1]
- \draw[->](-2,0)--(2,0)node[right]{$x$};
- \draw[->](0,-2)--(0,2)node[below]{$y$};
- \draw[->](0,0,-0.7)--(0,0,1.2)node[left]{$z$};
- #2
- \end{tikzpicture}}
复制代码 这时用:- \tmpxieerce{\draw(0,0)circle(1);}
- \tmpxieerce{\draw(0,0)circle(1cm);}
复制代码 得:
或许你会觉得前者这圆有点怪?没问题,加个外切正方形就会很清楚。
但是,如果加上 \draw(-1,-1)rectangle(1,1); 的话,则会变成这样:
可见 rectangle 依然会按原来的方法来画,不管你坐标系是怎样。
所以,只能写 \draw(-1,-1)--(1,-1)--(1,1)--(-1,1)--cycle; 才会得出:
另外,还扯到了画点的问题,如上所述,\fill ... circle ... 时也必须带单位,否则点也会变成椭圆。
但是,有时图形会使用 scale 来调整大小,这时点的大小也跟着变,我们希望点的大小尽量统一,为此我还想出了另一招:- \newcommand\filld[2][2pt]{\node at (#2) {\tikz{\fill circle (#1);}};}
复制代码 这样,以下代码:- \tmpxieerce{\draw(0,0)circle(1);
- \draw(-1,-1)--(1,-1)--(1,1)--(-1,1)--cycle;
- \fill (0,0) circle (2pt);}
- \tmpxieerce[scale=2]{\draw(0,0)circle(1);
- \draw(-1,-1)--(1,-1)--(1,1)--(-1,1)--cycle;
- \fill (0,0) circle (2pt);}
- \tmpxieerce[scale=2]{\draw(0,0)circle(1);
- \draw(-1,-1)--(1,-1)--(1,1)--(-1,1)--cycle;
- \filld{0,0}}
复制代码 得到的是:
也就是用 \filld 时的点默认是 2pt 大小,不管 scale 多少,而且,还可以用 \filld[...] 临时改变。
甚至可以这样:- \newcommand\fillds[2][2pt]{\foreach \i in {#2} {
- \node at (\i) {\tikz{\fill circle (#1);}};
- }}
- \tmpxieerce[scale=2]{\draw(0,0)circle(1);
- \draw(-1,-1)coordinate(A)--(1,-1)coordinate(B)
- --(1,1)coordinate(C)--(-1,1)coordinate(D)--cycle;
- \filld{0,0}
- \fillds{A,B,C,D}
- }
复制代码 得到:
|
|