通过使用交点命令,我能够使线$\mathcal{P}_{t_{1},\gamma}$
在集合外部以虚线表示。但是,我很好奇我是否可以从该线的内部部分取某个点,例如中点?
从数学中我们知道,如果我们有点$(x_{1},y_{1})$
和$(x_{2},y_{2})$
,那么沿着它们延伸的线上的点的形式为$(\lambda x_{1}+(1-\lambda)x_{2},\lambda y_{1}+(1-\lambda)y_{2})$
。
在这种情况下$(x_{1},y_{1})$
和$(x_{2},y_{2})$
是交点(po1)
和(po2)
(在代码中)。我们如何找到线上的任意一点并将其 与新线(po1) -- (po2)
连接起来?(7.23,8)
在任何一点上,我都意味着对其进行参数化,就像我们在第二段中所做的那样。
\documentclass{article}
\usepackage{tikz}
\usepackage[mathcal]{euscript}
\usetikzlibrary{arrows,shapes}
\usetikzlibrary{shapes,calc,positioning}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}[scale=0.5pt]
\draw[line width=0.5pt,name path=cur] plot [smooth cycle]
coordinates{(0.43,8.8) (1.23,9.4) (2.03,9.4)
(3.03,9.3) (4.03,9.5) (5.43,8.4)
(4.83,6) (7.36,6.27) (8.43,6.27)
(9.43,4.2) (8.63,2.6) (5.63,1)
(4.23,2.6) (1.23,6)};
\draw[dashed,line width=0.3pt,name path=lin1] (0,10.6)--(9.5,0.5);
\draw[dashed,line width=0.3pt,name path=lin2] (2,10.6)--(11.5,0.5);
\path [name intersections={of={lin1 and cur}, total=\n}]
\foreach \i in {1,...,\n} {(intersection-\i) coordinate(po\i)};
\draw[line width=0.5pt] (po1)--(po2);
\path [name intersections={of={lin2 and cur}, total=\n}]
\foreach \i in {1,...,\n} {(intersection-\i) coordinate(po\i)};
\draw[line width=0.5pt] (po1)--(po2);
\draw[line width=0.5pt] (po3)--(po4);
\draw (6.2,4) node[below left] {$E_{t_{1},\gamma}$};
\draw[->,line width=0.5pt] (7.23,8)--(8.83,9.6);
\draw (8.03,8.8) node[below right] {$\gamma$};
\draw (7,1) node[below right] {$\mathcal{P}_{t_{1},\gamma}$};
\draw (13,1) node[above left] {$\mathcal{P}_{t_{2},\gamma}$};
\end{tikzpicture}
\end{document}
答案1
添加怎么样
\path (po1) -- (po2) coordinate[pos=0.90] (btw1a2);
\draw[orange] (btw1a2) -- (7.23,8);
在图片的末尾。
您可以更改为和pos=<position>
之间的任意值来获得所需的点。0
1
答案2
库已经加载,然后和calc
之间的中间(或任何点)很容易:(po1)
(po2)
($(po1)!0.5!(po2)$)
(po1)
和之间的点(po2)
由 0 到 1 之间的数字指定。0 表示第一个点,1 表示第二个点。也可以指定负值或大于 1 的值来获取线外的点,由 和(po1)
定义(po2)
。