我想用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}
指定点A
和B
。\pstRotation[RotAngle=90,PointName=none]{A}{B}
将点旋转B
90度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)
。要求是a
和b
必须垂直。在向量分析中,这意味着点积必须为零,即
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
。