在 Asymptote 中将轴调整到绘制的表面

在 Asymptote 中将轴调整到绘制的表面

我正在用 Asymptote 绘制几个参数曲面。当我更改参数(tyMax在下面的 MWE 中)时,函数的值可能会发生显著变化,因此我必须调整每个参数的轴(xmin,xmax,...,zmax和)。unitsize

我的目标是自动调整轴。我想到的是简单地使用每个表面的极值f(t.x,t.y),但我不知道如何实现这一点。

我怎样才能做到这一点?

MWE(玩tyMax):

import graph3;

real xmin=-2, xmax=2;
real ymin=-2, ymax=2;
real zmin=-0.5, zmax=0.5;

limits((xmin,ymin,zmin),(xmax,ymax,zmax));

currentprojection=perspective(camera=(1.5,-2,1));

unitsize(2cm,2cm,2cm);

real X(pair t) { return cos(t.x+t.y);}
real Y(pair t) { return sin(t.x)*t.y;}
real Z(pair t) { return t.x**2+t.y;}

triple f(pair t) { return (X(t),Y(t),Z(t));}


real tyMax = 5;
surface s=surface(f,(0.,0),(2,tyMax), 60, 60, Spline);
draw(s,blue);

xaxis3(Label("$x_{n-1}$",MidPoint,align=Y-Z),Bounds(Both,Min),InTicks(Step=1),p=black);
yaxis3(Label("$x_{n}$",MidPoint,align=X-Z),Bounds(Both,Min),InTicks(Step=1),p=black);
zaxis3(Label("$\dot x_{n}$",EndPoint,align=X+Y),Bounds(Both,Min),InTicks(Step=1),p=black);

tyMax=5对于不tyMax=0.3改变轴的情况的说明:您会看到它需要调整:虽然第一张图像是“OK”,但第二张图像显然不是。

在此处输入图片描述在此处输入图片描述

请注意,此 MWE 中的函数非常简单,但在我的使用中我找不到极值的闭式表达式。

还要注意,这个问题可能简单地改写为“在中找到参数函数的极值Asymptote”,但我想给出背景,因为可能有更好的解决方案。


编辑orthographic添加了具有更简单表面的 相同投影问题的图示。

代码:

import graph3;

real xmin=-2, xmax=2;
real ymin=-2, ymax=2;
real zmin=-0.5, zmax=0.5;

limits((xmin,ymin,zmin),(xmax,ymax,zmax));

currentprojection=orthographic(camera=(1.5,-2,2));

unitsize(2cm,2cm,2cm);

real param = 2;
real alpha = 4;
draw(surface((param,param,param)--(param**alpha,2*param,3*param)--(3*param,param,param)--cycle),blue
);

xaxis3(Label("$x$",MidPoint,align=Y-Z),Bounds(Both,Min),InTicks(Step=1),p=black);
yaxis3(Label("$y$",MidPoint,align=X-Z),Bounds(Both,Min),InTicks(Step=1),p=black);
zaxis3(Label("$z$",EndPoint,align=X-Y),Bounds(Both,Min),InTicks(Step=1),p=black);

当 param=1、alpha=1 时:

在此处输入图片描述

当 param=2、alpha=4 时:

在此处输入图片描述

我想:

  • 轴被限制在表面(即,如果你缩小了盒子,你就会开始裁剪表面)
  • 盒子的比例始终保持不变,比如说输出应该始终是一个立方体。

答案1

如果ssurface(参数或其他),则min(s)是三元组(xmin, ymin, zmin),且max(s)是相似的。因此,是包含表面(指定为)box(min(s),max(s))的最小三维框。path3[]

相关内容