如何使用 Asymptote 绘制两个表面的交点?

如何使用 Asymptote 绘制两个表面的交点?

我正在尝试绘制平面与带渐近线的双曲面的交线。结果应该是 2 条相交线或一条圆锥曲线(椭圆、圆或抛物线)。

以下是代码:

settings.outformat="png";
settings.render=8;
size(200);
import solids;


currentprojection=perspective(0,-5,3);
revolution hyperboloid=revolution(graph(new triple(real z) {
  return (sqrt(1+z*z),0,z);},-2,2,20,operator ..),axis=Z);

draw(surface(hyperboloid), surfacepen=material(diffusepen=white+opacity(0.6),emissivepen=gray(0.6)));

draw(hyperboloid,12,black+0.3pt,longitudinalpen=0.1pt+black);


path3 p=plane((0,6,0),(0,0,6),O=(1,-3,-3));
draw(p);

我已经尝试过交点,但是代码不起作用。

答案1

到目前为止,Asymptote 中还没有两个表面的相交。从数学和数值的角度来看,这是一个难题,需要大量计算。欢迎您实现它 :) 我不是这个领域的专家,但如果任何人有一种不太困难的方法来实现贝塞尔曲面相交,我很乐意参考。

仅相交表面/路径 3 可用。

在您的具体情况下,也许您能够找到交点方程。

相关内容