如何使用 MetaPost 绘制直角?

如何使用 MetaPost 绘制直角?

我想用MetaPost画一个直角BAC,,A = (20,30)B = (0,0)的顶端是点A

我如何计算点的坐标C

正确的角度

答案1

您可以使用dotprod

u:=1mm;
beginfig(1);
z0=origin;
z1=(20u,30u);
y2=y0;
(z1-z0) dotprod (z2-z1)=0;
draw z0--z1--z2--cycle;
endfig;
end.

答案2

运行xelatex

\documentclass[a4paper,10pt]{article}
\usepackage{pstricks-add}
\def\drawAngle(#1)(#2){%
\psnode(#1){A}{A}\psnode(#2){B}{B}
\psnode(!\psGetNodeCenter{A}\psGetNodeCenter{B}
       A.y B.y sub A.x add A.x B.x sub neg A.y add ){C}{C}
\psline(B)(A)(C)
\psarc(A){1}{!\psGetNodeCenter{A}\psGetNodeCenter{B}
  B.y A.y sub B.x A.x sub atan}{!B.y A.y sub B.x A.x sub atan 90 add}%
}
\begin{document}
\begin{pspicture}[showgrid](0,-3)(4,3)
\drawAngle(1,2)(2,-2)
\psset{linecolor=red}
\drawAngle(4,-1)(2,1)
\end{pspicture}
\end{document}

在此处输入图片描述

答案3

PSTricks 的 4 个乐趣:

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}(6.6,3)
\psset{PointSymbol=none}
\pstGeonode[PosAngle={45,-135}](2,3){A}(0,0){B}
\pstRotation[RotAngle=90,PointName=none]{A}{B}
\pnode(A|B){B''}
\pstInterLL{A}{B'}{B}{B''}{C}
\pspolygon(A)(B)(C)
\pstRightAngle{B}{A}{C}
\end{pspicture}
\end{document}

描述:

  • \psset{PointSymbol=none}将这些点关闭。

  • \pstGeonode[PosAngle={45,-135}](2,3){A}(0,0){B}指定点AB

  • \pstRotation[RotAngle=90,PointName=none]{A}{B}将点旋转B90度A,新的点隐式地命名为B'

  • \pnode(A|B){B''}定义一个辅助点,B''其坐标为(A.x,B.y)

  • \pstInterLL{A}{B'}{B}{B''}{C}C找到线AB'和的交点BB''

  • \pspolygon(A)(B)(C)绘制三角形ABC

  • \pstRightAngle{B}{A}{C}粘贴 L 形直角标记。

答案4

首先,你要明白,有无数个点垂直于 AB。所以实际上你是在寻找一条线。要找到它,只需假设向量 AB 具有坐标BA=(20-0,30-0)=(20,30)=a和向量BC=(x-0, y-0)=(x,y)=b

要找到向量坐标,只需应用(xend-xstart, yend-ystart)。要求是ab必须垂直。在向量分析中,这意味着点积必须为零,即

a.b=0-> 
(20,30).(x,y)=0->20x+30y=0->
y=-(2/3)x

因此,选择并x应用上一条直线方程,您将得到y

编辑:我看到你改变了你的问题。这样你就会得到一条斜率相同但截距不同的新线。所以你的线会是这样的

y=ux+w

u斜率相同,即u=-2/3。同时它应该从点经过,A所以这个点必须是直线的解。因此,将A直线方程中的坐标替换为,您将得到

30=-(2/3)20+b->
...->
b=130/3

所以你的新台词是

y=-(2/3)x+130/3

再次,对于每一个,x你将获得一个y

相关内容