TikZ:可以通过缩短来沿着一条线放置新的坐标吗?

TikZ:可以通过缩短来沿着一条线放置新的坐标吗?

在这个例子中,我有一条从原点到的线(2,2),我将坐标放在了(A)(2,2)我想要做的是(A)在同一条线上放置一个低于 1 厘米的新坐标,然后在新位置画一条垂直线。这是我试过的代码,但它不能正常工作。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \draw (0, 0) -- (2, 2) coordinate (A);
  \coordinate[style = {shorten >= -1cm}] (P) at (A);
  \draw (P) -- ($(P)!2cm!-90:(A)$);
\end{tikzpicture}
\end{document}

正如您所看到的,我尝试缩短坐标,但是当我在新位置画一条线时,(P)它会从 直接向上画一条线(A)

为了回答这个问题,不要假设线角度​​未知,因为这里是 45 度。如果是这样的话,我们可能可以做类似(A)++(225:1cm) 坐标 (P) 的事情,但在我的实际问题中,我们没有如此干净的东西可以使用。

在此处输入图片描述

期望结果:

在此处输入图片描述


编辑2:

因此,此代码通过将线停止在 1 厘米短处而接近,但当我需要将 (P) 放置在红线末尾时,(P) 坐标仍然放置在 (A) 的位置。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \draw (0, 0) -- (2, 2) coordinate (A);
  \draw[shorten >= 1cm, red] (0, 0) -- (2, 2) coordinate (P);
  \draw[blue] (P) -- +(1, 0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

您可以使用calc库函数在两点之间进行插值,然后使用旋转来正交于路径

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (O) -- (3.72,2.46) coordinate(A);
\draw ($(O)!0.699!(A)$)coordinate (P) -- ($(P)!1cm!-90:(A)$);
\end{tikzpicture}
\end{document}

在此处输入图片描述

绝对距离:

\documentclass{article}
%\url{http://tex.stackexchange.com/q/123469/86}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \draw (0, 0) coordinate (O) -- (2, 2) coordinate (A);
  \coordinate (P) at ($(A)!1cm!(O)$);
  \draw (P) -- ($(P)!2cm!-90:(A)$);
\end{tikzpicture}
\end{document}

答案2

使用 PSTricks。只是为了好玩!

情况1:

要定义P径向下方 1 个单位的点A,请使用([nodesep=1]{O}A)。要定义一条线经过的点,并且该线垂直于OA,请使用([nodesep=1,offset=2]{O}A)

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(3,3)
    \pstGeonode
        (0,0){O}
        (2,2){A}
        ([nodesep=1]{O}A){P}
    \psline[linecolor=red](O)(A)
    \psline[linecolor=blue](P)([nodesep=1,offset=2]{O}A)
\end{pspicture}
\end{document}

在此处输入图片描述

案例 2:

要定义P垂直方向低于 1 个单位的点A,使用([Ynodesep=1]{O}A)。要定义一条直线经过的点,并且该点垂直于OA,使用([Ynodesep=1,offset=2]{O}A)

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(3,3)
    \pstGeonode
        (0,0){O}
        (2,2){A}
        ([Ynodesep=1]{O}A){P}
    \psline[linecolor=red](O)(A)
    \psline[linecolor=blue](P)([Ynodesep=1,offset=2]{O}A)
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容