我正在努力用 tikz 画一个图表。我试图在任意四边形内画一个平行四边形的简单图示。
我有以下代码将 S 放置在 O 和 P 中间。
有办法吗?理想情况下,我会得到一个命名坐标,最后用它来进行进一步的绘制
\documentclass{report}
\usepackage{tikz}
\usetikzlibrary{intersections, calc,through,backgrounds}
\begin{document}
\begin{tikzpicture}
%declare points OPQR at random locations
\coordinate[label=right:\textcolor{blue}{$O$}] (O) at ($(0,0) + 3*(rand, rand)$);
\coordinate[label=left:\textcolor{blue}{$P$}] (P) at ($(0,0) + -2*(rand, rand)$);
% I thought something like this would work, but it doesnt
%\coordinate[label=left:\textcolor{orange}{$S$}] (S) at ($0.5* ((O) - (P))$);
\draw[->, name path=A] (O) -- (P);
\end{tikzpicture}
\end{document}
我也尝试过:
(O) -- coordinate[midway](S) (P);
但是当我尝试从 S 到另一个点画一条线时,我收到一个错误,即 pgf 不知道任何名称的形状S
。
答案1
\coordinate (S) at ($(O)!0.5!(P)$);
应该可以解决你的问题。
答案2
不清楚,问题是什么。知道坐标后,S
您可以绘制一个矩形。它可以简单定义如下:
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds,
calc,
intersections,
through}
\begin{document}
\begin{tikzpicture}
% declare points OPQR at random locations
\coordinate[label=right:\textcolor{blue}{$O$}] (O) at ($(0,0) + 3*(rand, rand)$);
\coordinate[label=left: \textcolor{blue}{$P$}] (P) at ($(0,0) + -2*(rand, rand)$);
\draw[->, name path=A] (O) -- coordinate[label=left:\textcolor{orange}{$S$}] (S) (P);
\end{tikzpicture}
\end{document}
附录:
过了一会儿(过了一天半),我发现,正在寻找这样的东西:
无需使用任何 Ti钾Z 库 MWE 可以是:
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{quotes}
\begin{document}
\begin{tikzpicture}[text=blue]
% declare points OPQR at random locations
\coordinate[label=left:$O$] (O) at (+3*rand,+rand);
\coordinate[label=right:$P$] (P) at (-3*rand,-rand);
% path + new coordinate on midle of path
\draw[->] (O) -- coordinate[label=$S$] (S) (P);
\draw[->,red] (S) -- ++ (1,-1) node[right] {$S'$}; % as example of use S coordinate
\end{tikzpicture}
\end{document}