3D 角度标记

3D 角度标记

我想在 3D-pstricks 图形中标记角度。我尝试使用此问题中看到的解决方案:

3D 点阵中的直角

不幸的是,它不起作用。这是我的代码:

\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pst-all}
\usepackage{pst-3dplot}

\begin{document}

\psset{coorType=2,Alpha=90}
\begin{pspicture}[showgrid=false](-1.5,-1.5)(5.5,3.1)
\pstThreeDLine[linewidth=0.5pt,linecolor=black,linestyle=dashed](2,0,0)(0,0,0)(0,0,3)
\pstThreeDLine[linewidth=0.5pt,linecolor=black,linestyle=dashed](0,0,0)(0,5,0)
   \pstThreeDTriangle[fillstyle=solid,fillcolor=red!40,linewidth=0.2pt,linecolor=red,opacity=0.6](2,0,0)(0,0,1.5)(0,5,0)
\pstThreeDLine[linewidth=0.8pt,linecolor=black,linestyle=solid](2,0,0)(2,5,0)(0,5,0)(0,5,3)(2,5,3)(2,0,3)(2,0,0)
\pstThreeDLine[linewidth=0.8pt,linecolor=black,linestyle=solid](2,5,0)(2,5,3)
\pstThreeDLine[linewidth=0.8pt,linecolor=black,linestyle=solid](2,0,3)(0,0,3)(0,5,3)
\uput{0.1cm}[225](-1,-1){$A$}
\uput{0.1cm}[180](0,1.5){$B$}
\uput{0.1cm}[0](5,0){$C$}
\rput[c](1.5,-1.2){$a$}
\rput[l](4.6,-0.6){$b$}
\rput[l](5.1,1.5){$c$}
\ThreeDput[normal=7.5 3 10](0,0,1.5){
\psarc{-}(0,0){0.4}{0}{80}
}
\end{pspicture}

\end{document}


它看起来应该是这样的:

在此处输入图片描述

如果可能的话,每个角的符号应该放在与三角形相同的平面上。非常感谢您的帮助!

答案1

用于\pstThreeDEllipse标记角度:

 \pstThreeDEllipse[beginAngle=0,endAngle=90,
     linecolor=green](0,0,1.5)(0.2,0,-0.15)(0,0.25,-0.075)

(0,0,1.5)是圆的原点(中心)和(0.2,0,-0.15)(0,0.25,-0.075)椭圆(圆)的两个半径。

在此处输入图片描述

答案2

这是与 Asymptote 进行比较的一种方法。默认情况下,标记角度ABC是以 为中心的圆弧B,从BABC,逆时针旋转。因此,我们可以drawfill或两者兼而有之,并根据需要添加标签/箭头。

对于直角的标记,请参见这里

在此处输入图片描述

unitsize(1cm);
import three;
currentprojection=orthographic(dir(70,20),zoom=.95);

draw(Label("$x$",EndPoint),O--5X,Arrow3);
draw(Label("$y$",EndPoint,S),O--7Y,Arrow3);
draw(Label("$z$",EndPoint,W),O--4.5Z,Arrow3);

triple A=(3,0,0), B=(0,5,0), C=(0,0,3);
path3 tri=A--B--C--cycle;
draw(tri,blue);
draw(surface(tri),yellow+opacity(.5));

dot("$A$",A,NW);
dot("$B$",B,NE);
dot("$C$",C,NW);


// mark angle ABC in 3D
// as an arc centered at B, from BA to BC, for arrow if any)
// so we can draw, fill, or both, as desired
path3 Nmark(triple A, triple B, triple C, real size=.5,bool direction=CCW){
triple Ba=B+size*unit(A-B);
triple Bc=B+size*unit(C-B);
triple Bt=Ba+Bc-B;
return arc(B,Ba,Bc,normal=cross(A-B,C-B),direction);
};

draw(Nmark(A,B,C,1),red,Arrow3);
draw(Nmark(B,C,A,.6));
draw(Label("$\gamma$",Relative(.5),align=S),Nmark(B,C,A,.7));
draw(surface(A--Nmark(C,A,B)--cycle),green);

相关内容