如何绘制四分之一椭圆

如何绘制四分之一椭圆

我试图绘制一个从点 (a,a,0) 开始到 (0,0,a) 结束的四分之一椭圆,代码如下:

\begin{asy}[width=\textwidth]

settings.render=6;
settings.prc=false;
import three;
import graph3;
import grid3;
currentprojection=obliqueX;

pen thickblack = black+0.75;
real axislength = 1.0;
draw(L=Label("$x$", position=Relative(1.1), align=SW), O--axislength*X,thickblack, Arrow3); 
draw(L=Label("$y$", position=Relative(1.1), align=E), O--axislength*Y,thickblack, Arrow3); 
draw(L=Label("$z$", position=Relative(1.1), align=N), O--axislength*Z,thickblack, Arrow3); 

label("$a$", (0.5,0,0), align=NW);
label("$a$", (0,0.5,0), align=NE);
label("$a$", (0,0,0.5), align=NW);

real a=0.5;

draw(O--expi(pi/2,pi/4),black+0.25);
draw(arc(c=O, a*Y, a*Z), blue);
draw(arc(c=O, a*X, a*Z), red);

dot((a,a,0)); 

draw((0,a,0)--(a,a,0),blue);
draw((a,a,0)--(a,0,0),red);
draw((0,0,a)--(0,0.9,a),red);
draw((a,0,0)--(a,0.9,0),red);
draw(arc(c=(0,0.8,0),(a,0.8,0), (0,0.8,a)), red);

draw((a,a,0)--(0.9,a,0),blue);
draw((0,0,a)--(0.9,0,a),blue);

\end{asy}

此外,我需要用不同的图案填充两个三角形 [(0,0,0) -- (0,a,0) -- (a,a,0)] 和 [(0,0,0) -- (a,0,0) -- (a,a,0)],但我不知道该怎么做。抱歉,如果这是非常基础的,我是渐近线的新手。双圆柱交叉口

答案1

欢迎!以下是基于以下几点临时建议:这个很棒的教程这个答案。椭圆弧绘制为参数图,三角形绘制为填充曲面。

\documentclass{article}
\usepackage{asymptote}
\begin{document}
\begin{asy}[width=\textwidth]

settings.render=6;
settings.prc=false;
import three;
import graph3;
import grid3;
currentprojection=obliqueX;

pen thickblack = black+0.75;
real axislength = 1.0;
draw(L=Label("$x$", position=Relative(1.1), align=SW), O--axislength*X,thickblack, Arrow3); 
draw(L=Label("$y$", position=Relative(1.1), align=E), O--axislength*Y,thickblack, Arrow3); 
draw(L=Label("$z$", position=Relative(1.1), align=N), O--axislength*Z,thickblack, Arrow3); 

label("$a$", (0.5,0,0), align=NW);
label("$a$", (0,0.5,0), align=NE);
label("$a$", (0,0,0.5), align=NW);

real a=0.5;

draw(O--expi(pi/2,pi/4),black+0.25);
draw(arc(c=O, a*Y, a*Z), blue);
draw(arc(c=O, a*X, a*Z), red);

dot((a,a,0)); 

draw((0,a,0)--(a,a,0),blue);
draw((a,a,0)--(a,0,0),red);
draw((0,0,a)--(0,0.9,a),red);
draw((a,0,0)--(a,0.9,0),red);
draw(arc(c=(0,0.8,0),(a,0.8,0), (0,0.8,a)), red);

draw((a,a,0)--(0.9,a,0),blue);
draw((0,0,a)--(0.9,0,a),blue);

triple f(real t) {
    return (a*cos(t),a*cos(t),a*sin(t));
}

path3 ellarc = graph(f, 0, pi/2, operator ..); 
draw(ellarc,orange);

path3 t1=((0,0,0) -- (0,a,0) -- (a,a,0) -- cycle);
surface s1=surface(t1);
draw(s1,red+opacity(.6),light=nolight);

path3 t2=((0,0,0) -- (a,0,0) -- (a,a,0) -- cycle);
surface s2=surface(t2);
draw(s2,blue+opacity(.6),light=nolight);
\end{asy}
\end{document}

在此处输入图片描述

附录:对一个弯曲的三角形进行阴影处理非常容易。

\documentclass{article}
\usepackage{asymptote}
\begin{document}
\begin{asy}[width=\textwidth]

settings.render=6;
settings.prc=false;
import three;
import graph3;
import grid3;
currentprojection=obliqueX;

pen thickblack = black+0.75;
real axislength = 1.0;
draw(L=Label("$x$", position=Relative(1.1), align=SW), O--axislength*X,thickblack, Arrow3); 
draw(L=Label("$y$", position=Relative(1.1), align=E), O--axislength*Y,thickblack, Arrow3); 
draw(L=Label("$z$", position=Relative(1.1), align=N), O--axislength*Z,thickblack, Arrow3); 

label("$a$", (0.5,0,0), align=NW);
label("$a$", (0,0.5,0), align=NE);
label("$a$", (0,0,0.5), align=NW);

real a=0.5;

draw(O--expi(pi/2,pi/4),black+0.25);
draw(arc(c=O, a*Y, a*Z), blue);
draw(arc(c=O, a*X, a*Z), red);

dot((a,a,0)); 

draw((0,a,0)--(a,a,0),blue);
draw((a,a,0)--(a,0,0),red);
draw((0,0,a)--(0,0.9,a),red);
draw((a,0,0)--(a,0.9,0),red);
draw(arc(c=(0,0.8,0),(a,0.8,0), (0,0.8,a)), red);

draw((a,a,0)--(0.9,a,0),blue);
draw((0,0,a)--(0.9,0,a),blue);

triple f(real t) {
    return (a*cos(t),a*cos(t),a*sin(t));
}

path3 ellarc = graph(f, 0, pi/2, operator ..,n=101); 
path3 ellarcp = graph(f,  pi/2,0, operator ..,n=101); 

draw(ellarc,orange);

path3 t1=((0,0,0) -- (0,a,0) -- (a,a,0) -- cycle);
surface s1=surface(t1);
draw(s1,red+opacity(.6),light=nolight);

path3 t2=((0,0,0) -- (a,0,0) -- (a,a,0) -- cycle);
surface s2=surface(t2);
draw(s2,blue+opacity(.6),light=nolight);


path3 ec2 = ( (ellarc) .. arc(c=O, a*Z, a*X)-- cycle); 
surface sec2=surface(ec2); 
draw(sec2,cyan+opacity(.5),light=nolight);

//path3 ec1 = ( arc(c=O, a*Y, a*Z) -- (ellarcp) -- cycle); 
//surface sec1=surface(ec1); 
//draw(sec1,green+opacity(.5),light=nolight); 


\end{asy}
\end{document}

在此处输入图片描述

但是,我无法精确填充另一个弯曲三角形。我尝试过恢复方向等,但都不起作用,我想我只是经验不足。但是,由于这不是原始问题的一部分,我鼓励您就此提出新问题。

相关内容