渐近线:使用平面项目和 XYplane 投影对象

渐近线:使用平面项目和 XYplane 投影对象

我需要绘制如下图所示的图形:

在此处输入图片描述

这个想法是先画蓝色矩形,然后将其投影到 XY 平面。我当前的代码粘贴在下面。

import graph3;
import three;
settings.outformat="pdf";
currentprojection=orthographic(1,-2,0.5);
limits((-4,-4,-0.2),(4,4,3.5));
size3(8cm,8cm,4cm);

// Draw axis
xaxis3("$x$",Arrow3);
yaxis3("$y$",Arrow3);
zaxis3("$z$",Arrow3);

// Draw blue rectangle
path3 rect1=(0.5,0.5,2)--(1.5,0.5,2)--(1.5,1.5,2)--(0.5,1.5,2)--cycle;
draw(rect1,blue);

// Construct projection and draw red rectangle
// XYplane is defined in three library
transform3 proj=planeproject(XYplane);
path3 proj=proj*rect1;
draw(proj,red);

编译因错误而终止:

no matching function 'planeproject(triple(pair z))'

有任何想法或指示如何进行吗?

答案1

期望planeproject的只是平面的法向量。XYplane是 类型的对象triple(pair):它实际上是将 (x,y) 映射到 (x,y,0) 的函数。 您想要的法向量只是Z

这是通过替换获得的工作planeproject(XYplane)代码planeproject(Z)

import graph3;
import three;
settings.outformat="pdf";
currentprojection=orthographic(1,-2,0.5);
limits((-4,-4,-0.2),(4,4,3.5));
size3(8cm,8cm,4cm);

// Draw axis
xaxis3("$x$",Arrow3);
yaxis3("$y$",Arrow3);
zaxis3("$z$",Arrow3);

// Draw blue rectangle
path3 rect1=(0.5,0.5,2)--(1.5,0.5,2)--(1.5,1.5,2)--(0.5,1.5,2)--cycle;
draw(rect1,blue);

// Construct projection and draw red rectangle
// XYplane is defined in three library
transform3 proj=planeproject(Z);
path3 proj=proj*rect1;
draw(proj,red);

结果:

在此处输入图片描述

另一个一般提示:通常最好settings.outformat="pdf";在开始导入之前进行更改,因为某些模块会根据设置执行不同的事情。

相关内容