路径与节点问题

路径与节点问题

在下面的例子中,为什么没有蓝色三角形?

\documentclass[a4paper]{article}
\usepackage[marginparsep=3pt, top=2cm, bottom=1.5cm, left=3cm, right=1.5cm]{geometry}

\usepackage{tikz}
\usetikzlibrary{calc,intersections}

\tikzset{small dot/.style={fill=black,circle,scale=0.3},}

\begin{document}
\begin{tikzpicture}

\coordinate (A0) at (0,0) ;
\coordinate (A1) at (1,0) ;
\coordinate (A2) at (0,1) ;

\draw[fill=red] (A0)--(A1)--(A2)--cycle ;

\draw ($ (A0)!.5!(A1) $) node (E0) {};  
\draw ($ (A1)!.5!(A2) $) node (E1) {};  
\draw ($ (A2)!.5!(A0) $) node (E2) {};  

\draw[fill=blue] (E0)--(E1)--(E2)--cycle ;

\end{tikzpicture}
\end{document}

在此处输入图片描述

这只是我遇到的问题的一个简单示例。由于我需要用它let...in...来计算! !系数,因此我对 Ex 节点使用了此节点定义。是否有其他方法或如何更正蓝色三角形绘图。

一个人可以作弊:

\draw ($ (A0)!.5!(A1) $) node (E0) {};  
\draw ($ (A1)!.5!(A2) $) node (E1) {};  
\draw ($ (A2)!.5!(A0) $) node (E2) {};  

\coordinate (B0) at (E0) ;
\coordinate (B1) at (E1) ;
\coordinate (B2) at (E2) ;


\draw[fill=blue] (B0)--(B1)--(B2)--cycle ;

工作正常,但为什么我第一次不工作?

答案1

nodes不是几何点,即使没有内容,它们也占据空间。这是因为它们有inner sepouter sep。当你

\draw[fill=blue] (E0)--(E1)--(E2)--cycle ;

您没有给出node应该从哪一点绘制线条,因为上面的代码行中没有指定锚点。请注意,acoordinate是一个几何点,因此您可以直接从它绘制。因此,要从节点绘制,必须指定适当的锚点,如(E0.center)。另一方面,除了,您可以像ferahfeza在他的回答中所做的那样直接定义一个坐标,或者简单地以以下方式node定义为一个坐标:node

node[coordinate] (E0) {};

或者

node[inner sep=0pt,outer sep=0pt] (E0) {};

这两种方法都行得通。但是如果你采用后者,你仍然需要提供像 这样的锚点(E0.center)

示例代码:

\documentclass[a4paper]{article}
\usepackage[marginparsep=3pt, top=2cm, bottom=1.5cm, left=3cm, right=1.5cm]{geometry}

\usepackage{tikz}
\usetikzlibrary{calc,intersections}

\tikzset{small dot/.style={fill=black,circle,scale=0.3},}

\begin{document}
\begin{tikzpicture}

\coordinate (A0) at (0,0) ;
\coordinate (A1) at (1,0) ;
\coordinate (A2) at (0,1) ;

\draw[fill=red] (A0)--(A1)--(A2)--cycle ;

\path ($ (A0)!.5!(A1) $) node[inner sep=0pt,outer sep=0pt] (E0) {};
\path ($ (A1)!.5!(A2) $) node[inner sep=0pt,outer sep=0pt] (E1) {};
\path ($ (A2)!.5!(A0) $) node[inner sep=0pt,outer sep=0pt] (E2) {};

\draw[fill=blue] (E0.north)--(E1.center)--(E2.east)--cycle ;

\end{tikzpicture}
\end{document}

在此处输入图片描述

请注意,我没有给出绘制的锚点,而是center选择了合适的锚点(尝试失败),以便蓝色三角形的角不会突出红色三角形。寓意是,当您想要坐标时,定义一个而不是节点。

答案2

将节点定义为坐标:

\documentclass[a4paper]{article}
\usepackage[marginparsep=3pt, top=2cm, bottom=1.5cm, left=3cm, right=1.5cm]{geometry}

\usepackage{tikz}
\usetikzlibrary{calc,intersections}

%\tikzset{small dot/.style={fill=black,circle,scale=0.3},}

\begin{document}
\begin{tikzpicture}

\coordinate (A0) at (0,0) ;
\coordinate (A1) at (1,0) ;
\coordinate (A2) at (0,1) ;

\draw [fill=red] (A0)--(A1)--(A2)--cycle ;

\coordinate (E0) at ($ (A0)!.5!(A1) $);  
\coordinate (E1) at ($ (A1)!.5!(A2) $);  
\coordinate (E2) at ($ (A2)!.5!(A0) $)  ;  

\draw [fill=blue] (E0)--(E1)--(E2)--cycle ;

\end{tikzpicture}
\end{document}

答案3

基于默认选项的无需计算的紧凑解决方案。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=5]
\draw[fill=red]   (0,0) -- coordinate (E0)(1,0) 
                        -- coordinate (E1)(0,1) 
                        -- coordinate (E2) 
                           cycle ;   
\draw[fill=blue] (E0)--(E1)--(E2)--cycle ;
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容