使用 Asymptote,如何旋转表示三角形边长的标签?

使用 Asymptote,如何旋转表示三角形边长的标签?

我有一张直角三角形的图。我想将斜边长度的标签排版为斜边方向。

此外,我希望能够提供用蓝色绘制直角标记并将其包围的区域涂成黄色的代码。

我想添加一个圆弧,表示 $\angle{QPR}$ 的度数为 $\theta$。为什么以下代码没有画出圆弧?

import geometry;    
pen BluePen=blue+1bp;
markangle(O, P, C, radius=8.5mm, BluePen);

我没有在下面的代码中包含它以避免编译错误。

[asy]
import olympiad;
size(150);
pair P, Q, R;
P = (sqrt(7),1);
Q = (0,0);
R = (sqrt(7),0);
//
draw(P--Q--R--cycle);
//
//
label(scale(0.75)* "$\sqrt{x}$", Q--R, S);
label(scale(0.75)* "$\sqrt{x+1}$", P--Q, NNW);
label(scale(0.75)* "$1$", P--R, E);
label(scale(0.85)* "$P$", P, N);
label(scale(0.85)* "$Q$", Q, S);
label(scale(0.85)* "$R$", R, S);
//
//
//
draw(rightanglemark(P, R, Q, 4));
[/asy]

答案1

这是一个快捷的方法。

在此处输入图片描述

// http://asymptote.ualberta.ca/
size(150);
pair P, Q, R;
P = (sqrt(7),1);
Q = (0,0);
R = (sqrt(7),0);
filldraw(box(R,R+.2dir(135)),yellow,black);
draw(arc(P,.2,degrees(R-P),degrees(Q-P)));
path pmark=arc(P,.3,degrees(R-P),degrees(Q-P));
label(scale(0.75)*"$\theta$",relpoint(pmark,.5));
draw(P--Q--R--cycle);
label(scale(0.75)* "$\sqrt{x}$", Q--R, S);
label(Label(scale(0.75)* "$\sqrt{x+1}$",Rotate(P-Q)), P--Q);
label(scale(0.75)* "$1$", P--R, E);
label(scale(0.85)* "$P$", P, NE);
label(scale(0.85)* "$Q$", Q, SW);
label(scale(0.85)* "$R$", R, SE);

答案2

或者,使用perpendicularmark()模块geometry

settings.tex="pdflatex";
import geometry;
void perpMark(picture pic=currentpicture, 
       pair M, pair O, pair B, real size=5, 
       pen p=currentpen, filltype filltype = NoFill){
  perpendicularmark(pic, M,unit(unit(O-M)+unit(B-M)),size,p,filltype);
}

size(150);
pair P, Q, R;
P = (sqrt(7),1);
Q = (0,0);
R = (sqrt(7),0);
perpMark(R, P, Q, Fill(paleyellow));
draw(P--Q--R--cycle);
dot(P--Q--R,UnFill);
label(scale(0.75)* "$\sqrt{x}$", (Q+R)/2, UnFill);
label(rotate(degrees(P-Q))*scale(0.75)* "$\sqrt{x+1}$", (P+Q)/2,UnFill);
label(scale(0.75)* "$1$", (P+R)/2,UnFill);
label(scale(0.85)* "$P$", P, N);
label(scale(0.85)* "$Q$", Q, S);
label(scale(0.85)* "$R$", R, S);

在此处输入图片描述

答案3

使用tzplot

在此处输入图片描述

\documentclass[tikz]{standalone} 

\usepackage{tzplot}

\begin{document}

\begin{tikzpicture}[scale=1.5,font=\scriptsize]
\tzcoors(0,0)(Q){$Q$}[-135]({sqrt(7)},1)(P){$P$}[45]({sqrt(7)},0)(R){$R$}[-45];
\tzpolygon(P){$\sqrt{x+1}$}[sloped,a](Q){$\sqrt x$}[b](R){1}[r](P);
\tzanglemark(Q)(P)(R){$\theta$}(5pt)
\tzrightanglemark*[draw,fill=yellow,opacity=1](Q)(R)(P)(3pt)
\end{tikzpicture}

\end{document}

相关内容