Tikz \path 命令-使用第二个交叉点

Tikz \path 命令-使用第二个交叉点

我的目标是制作下图: 在此处输入图片描述

这是一个 MWE几乎这样做:

\documentclass[11pt]{article}

\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds,matrix,patterns}

\begin{document}

    \begin{tikzpicture}[scale=0.5]
    \footnotesize

    \draw[<->] (0,15)--(0,0)--(16.5,0); 
    \draw[name path = S] (0,0) ..controls (1,5) and (9,9.5) .. (12,10.1) node[right]{$S$};
    \draw[name path = Y] (0,0)--(12,12) node[right]{$Y$};

    \path [name intersections={of=S and Y, by = I1}];

    \draw[dashed] let \p1 = (I1) in (\x1,0) node[below]{$k^*$} --(\x1,\y1); 

    % a loop to generate the arrows on the x-axis
    \foreach\i in {1,...,5}{
        \draw let \p1 = (I1) in  (\x1,0) node[shift={(0.5*\i,0)}] {$<$};
        \draw let \p1 = (I1) in  (\x1,0) node[shift={(-0.5*\i,0)}] {$>$};
    }

    \end{tikzpicture}

\end{document}

该 MWE 产生以下输出:

在此处输入图片描述

我确实知道为什么会出错。 Y 线和 S 线有两个交点 - 一个在原点,另一个在更高处(我实际上想要处理的那个)。 指定坐标的代码I1是:

\path [name intersections={of=S and Y, by = I1}];

这将取第一个交点于(0,0),这就是为什么输出如您所见。

然而,尽管知道问题所在,却不知道如何解决它。

我该如何修改该代码来获取第二个交点?


有一个“秘诀”可用于解决该问题。只需将 Y 线的初始坐标从 更改为(0,0)(0.001, 0)这将删除第一个交点,而不会产生任何可见效果。但是,我仍然想知道如何稳健地解决它。

答案1

您可以将列表传递给by键,然后交叉点将根据列表命名。您甚至可以使用键沿着一条路径对交叉点进行排序sort by,但这可能无法处理复杂的直线集合

\documentclass[11pt]{article}

\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds,matrix,patterns}

\begin{document}

    \begin{tikzpicture}[scale=0.5]
    \footnotesize

    \draw[<->] (0,15)--(0,0)--(16.5,0); 
    \draw[name path = S] (0,0) ..controls (1,5) and (9,9.5) .. (12,10.1) node[right]{$S$};
    \draw[name path = Y] (0,0)--(12,12) node[right]{$Y$};

    \path [name intersections={of=S and Y, by ={aux, I1}}];

    \draw[dashed] let \p1 = (I1) in (\x1,0) node[below]{$k^*$} --(\x1,\y1); 

    % a loop to generate the arrows on the x-axis
    \foreach\i in {1,...,5}{
        \draw let \p1 = (I1) in  (\x1,0) node[shift={(0.5*\i,0)}] {$<$};
        \draw let \p1 = (I1) in  (\x1,0) node[shift={(-0.5*\i,0)}] {$>$};
    }

    \end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容