A-B
我在两点A
和之间有一条线,在上有B
一个点。X
A-B
现在我想画一条线,X
该线通过该线与线垂直A-B
。我该怎么做?
还:
没有给出线周围的其他(直接相关)点,我只有X
使用和创建两条相交路径的乘积\path
。因此我说我不能使用代码来回答其他相关问题(如右图所示),至少我不知道如何使用。
图片
平均能量损失
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{
tikz,
xspace
}
\usetikzlibrary{
intersections,
calc
}
\begin{document}
\begin{tikzpicture}[font=\small]
\draw
(0,0) coordinate (A)
(1,1.435) coordinate (B)
(3,3) coordinate (C)
;
\draw[thick] (A) rectangle (C);
\draw[thick] (A)--(B) node[pos=0.6] (x) {x};
\end{tikzpicture}
\end{document}
答案1
Jake 的链接确实有解决方案。
如果内容显示在 处,则需要X
尝试使用inner
和值。或者使用(感谢 Jake)。outer sep
.center
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{
tikz,
}
\usetikzlibrary{
intersections,
calc
}
\begin{document}
\begin{tikzpicture}[font=\small]
\draw
(0,0) coordinate (A)
(1,1.435) coordinate (B)
(3,3) coordinate (C)
;
\draw[thick] (A) rectangle (C);
\draw[thick] (A)--(B) node[pos=0.6, inner sep=0pt, outer sep=0pt](x){x};
\draw[thick] ($(x)!0.5cm!90:(A)$) -- ($(x)!0.5cm!-90:(A)$);
\end{tikzpicture}
\end{document}
答案2
这些基本的几何构造很容易元帖子一旦你掌握了陈述方程的窍门。这是我对规范的纯 Metapost 方法的尝试,在第 9 章末尾进行了解释Metafont 书籍。
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
% some arbitrary points
z1 = (20,80);
z2 = (90,30);
z3 = (60,80);
% a point somewhere on the line through z1 and z2;
z4 = whatever[z1,z2];
% the direction of z3 from z4 is at right angles to that of z2 from z1
z3-z4 = whatever*(z2-z1) rotated 90;
% mark the right angle neatly
draw unitsquare scaled 5 rotated angle (z2-z1) shifted z4 withcolor .7 white;
draw z1--z2;
draw z3--z4 withcolor .67 red;
dotlabel.top("A",z1);
dotlabel.bot("B",z2);
dotlabel.rt("X",z3);
endfig;
end.
该whatever
功能提供任意匿名数字变量。这些变量可以采用任意实数值和任意符号,因此在这种情况下减法的顺序无关紧要,并且点X
可以位于线的任意一侧AB
。
Metapost(法语)上有丰富的几何材料来源锡拉丘兹网站。
答案3
使用 PSTricks 的更快解决方案只是为了好玩。
\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}(8,8)
\pstGeonode[CurveType=polyline](0,6){A}(6,0){B}([nodesep=4]{B}A){X}
\pcline[linecolor=blue]([offset=1]{A}X)([offset=4]{B}X)
\end{pspicture}
\end{document}
答案4
带有脏污tikz
和变换:
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{
tikz,
xspace
}
\usetikzlibrary{
intersections,
calc
}
\begin{document}
\begin{tikzpicture}[font=\small]
\draw
(0,0) coordinate (A)
(1,1.435) coordinate (B)
(3,3) coordinate (C)
;
\draw[thick] (A) rectangle (C);
\draw[thick] (A)--(B) node[pos=0.6] (x) {x};
\draw[red,thick,transform canvas={rotate around={90:(x)}}] (A) -- (B) ;
\end{tikzpicture}
\end{document}
您准备一条从 A 到 B 的线,然后(在绘制之前)将其绕 X 旋转 90°。当然,如果您想要不同的长度,您可以在从 A 到 B 的路径上相应地放置坐标。
显然,transform canvas
如果坐标是用节点名称给出的,则使用是必要的,但是,如果直接给出坐标,则不需要。手册说这transform canvas
是邪恶的,但硬编码坐标也是邪恶的,所以......