给定长度的两点线的垂直线

给定长度的两点线的垂直线

我有两个点 A 和 B,我将由 A 和 B 组成的线称为 LAB:ax+by+c=0,我想从点 B 开始绘制一条垂直于 LAB 且长度为 len 的线段,使得该线段位于直线 LAB 的正侧,即半空间 ax+by+c>0。在 Tikz 中如何实现?

我设法在 Matlab 中计算并绘制了这样的线,以下是代码。这可能有助于理解我的意思:

%% input data
A.x = 2;
A.y = 2;
B.x = 6;
B.y = 5;
d = 2.5; % the length len
P = B; % selected end point 
%% calculation
v.x = B.x - A.x;
v.y = B.y - A.y;

X = v.y*d/sqrt(1+v.x^2);
Y = -v.x/v.y*X;

% in one side of the line LAB
C.x = X + P.x; 
C.y = Y + P.y;

% in another side of the line LAB
D.x = P.x - X;
D.y = P.y - Y;
%% visualization
figure(1);hold on; axis equal;
plot(A.x,A.y,'ro',B.x,B.y,'bo',C.x,C.y,'go',D.x,D.y,'yo');
plot([A.x B.x],[A.y B.y],'-k');
plot([B.x C.x],[B.y C.y],'-k');
plot([B.x D.x],[B.y D.y],'-k');

在此处输入图片描述

答案1

我不太确定我是否理解了你试图做的事情,但也许这个calc库可以帮上忙。要绘制一条从点开始的线,该线垂直于点和(B)点之间的线,给定一个,你可以使用语法(A)(B)<length>\draw (B) -- ($(B)!<length>!-90:(A)$);

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}[dot/.style={circle,inner sep=1pt,fill,label={#1},name=#1}]

\node [dot=A] at (0,0) {};
\node [dot=B] at (3,1) {};

\draw (A) -- (B);

\draw (B) -- ($(B)!1cm!-90:(A)$);


\end{tikzpicture}
\end{document}

答案2

只是为了和 PSTricks 一起玩。

\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl}

\def\y{2*x-2}

\begin{document}
\begin{pspicture}(3,3)
    \pstGeonode[CurveType=polyline](*1 {\y}){A}(*2 {\y}){B}
    \pcline(B)([offset=-1]{A}B)
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容