给定两个坐标(v1)和(v2),我的目标是绘制一个矩形,如下所示:
- 一侧由 (v1)--(v2) 唯一定义。
- 另一边的长度为 1。
- 穿过 (v1)-(v2) 的线是黑色。
- 与 (v1)--(v2) 平行的线是绿色。
- 其余各面均为灰色且有斑点。
有人知道怎么做吗?我尝试计算矩形的明确角,但结果却得出了非常糟糕的数字。
通过简单的坐标它应该看起来像这样:
\begin{tikzpicture}
\coordinate (v1) at (-3, 0);
\coordinate (v2) at (3,0);
\coordinate (v3) at (3,1);
\coordinate (v4) at (-3,1);
\draw[fill, black] (v1) circle[radius=1pt];
\draw[fill, black] (v2) circle[radius=1pt];
\draw[fill, black] (v3) circle[radius=1pt];
\draw[fill, black] (v4) circle[radius=1pt];
\draw (v1)--(v2);
\draw [gray, dashed] (v2)--(v3);
\draw [green] (v3)--(v4);
\draw [gray, dashed] (v4)--(v1);
\end{tikzpicture}
但是如果您不能简单地计算(v3)和(v4),您该怎么办,例如(v1)=(-5,3)和(v2)=(2,1)。
答案1
欢迎来到 TeX.SE!!!
使用 Ti 非常容易钾Zcalc
库。使用它,您可以为该任务创建一个宏。类似于以下示例:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{calc}
\newcommand{\myrectangle}[2]
{
\coordinate (aux1) at ($(#1)!1cm!90:(#2)$);
\coordinate (aux2) at ($(#2)!1cm!-90:(#1)$);
\draw[gray, dashed] (#1) -- (aux1);
\draw[gray, dashed] (#2) -- (aux2);
\draw (#1) -- (#2);
\draw[green] (aux1) -- (aux2);
\foreach\i in {(#1),(#2),(aux1),(aux2)}
\filldraw \i circle [radius=1pt];
}
\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (-3, 0);
\coordinate (v2) at (3,0);
\myrectangle{v1}{v2}
\myrectangle{2,3}{5,-1}
\end{tikzpicture}
\end{document}