我该如何画出这个形状?

我该如何画出这个形状?

在此处输入图片描述

我该如何画出这个形状?请帮帮我。

或者介绍一个你可以用该形状绘制的文章

多谢

答案1

使用渐近线相当简单。正如我在评论中提到的,在这里你不必手动输入 3D 特征。当然,我不知道小箭头的位置,所以我使用随机数,也没有精确的斜率,所以我猜了一个。

\documentclass[border=5pt]{standalone}
\usepackage{asypictureB}
\begin{document}
\begin{asypicture}{name=AsyVF}
import graph3;
import three;
import solids;

size(6cm,8cm);
settings.render = 4;
currentprojection = perspective((3,10,4), up=Z,autoadjust=true);//,autoadjust=true
currentlight=(2,15,5);

// coordinate axes 
//draw(O -- 2X,L=Label("$x$",position=EndPoint));
//draw(O -- 2Y,L=Label("$y$", position=EndPoint));
//draw(-2Z -- 2Z,L=Label("$z$", position=EndPoint));

// fat arrow
draw(O -- -X, arrow=Arrow3(), p=lightgray+linewidth(3pt),light=currentlight);

pen color = white;
material planepen = material(diffusepen=opacity(1), emissivepen=0.8*color);

path3 mybox1 = (0,1,1) -- (0.1,1,1) -- (0.1,1,-1) -- (0,1,-1)  -- cycle;
for (int rot=0; rot<=3; rot+=1)
{
    draw(surface(rotate(rot*90,X)*mybox1), surfacepen=planepen);
    draw(surface(scale3(0.9)*rotate(rot*90,X)*mybox1), surfacepen=planepen);
}

//draw(mybox1);

path3 mybox2 = (0,1,1) -- (0,-1,1)  -- (0,-1,-1)  -- (0,1,-1) -- (0,1,1) --
(0,0.9,0.9) -- (0,0.9,-0.9)  -- (0,-0.9,-0.9)  -- (0,-0.9,0.9) -- (0,0.9,0.9)
-- (0,1,1) -- cycle;
for (real s=0.0; s<=0.1; s+=0.1)
{
    draw(surface(shift(s*X)*mybox2), surfacepen=planepen);
}

draw(scale3(0.05)*unitsphere,lightgray,light=currentlight);

srand(4);
for (int irun=0; irun<=21; irun+=1)
{
real myx = 2*(1-2*unitrand());
real myy = 1.2*(1-2*unitrand());
real myz = 1.2*(1-2*unitrand());
draw(myx*X+myy*Y+myz*Z -- myx*X+myy*Y+myz*Z+0.5*(-X+Z), arrow=Arrow3(), p=linewidth(0.5pt),light=currentlight);
draw(shift(myx*X+myy*Y+myz*Z)*scale3(0.05)*unitsphere,lightgray,light=currentlight);
}
\end{asypicture}
\end{document}

在此处输入图片描述

相关内容