渐近线:向轮廓函数发送参数

渐近线:向轮廓函数发送参数

我想用 Asymptote 制作图形动画。为此,该函数需要一个参数d

real f(real x, real y) {
    
    return (x^2 + y^2 + d * x);
    }

guide[][] thegraphs = contour(f, a=(-2,-2), b=(2,2), new real[] {0});

我们如何使用轮廓发送参数?

答案1

是的,在 Asymptote 中有所谓的匿名函数(参见这里,第 290 页)可以通过关键字来创建new,这样就可以简化示例中的函数定义,而无需使用编程技巧(你很难 ^^ 你的技巧很舒服!)。

在此处输入图片描述

size(5cm);
import graph;
import contour;

typedef real function(real, real);
function f(real d) {
return new real(real x, real y) {
return x^2 + y^2 -1+ d*x^2*y^2;
};
}

pen[] c={red, blue,purple,orange}; c.cyclic=true; // for different Edwards curves

for(int d=100; d > 0; d -= 10) {
guide[][] thegraphs = contour(f(d), a=(-2,-2), b=(2,2), new real[] {0},nx=200,operator..);
// nx=200 >>> for larger sample (default nx=100,ny=nx)
// operator.. >>> smoother join
draw(thegraphs[0],c[d]);
}

shipout(bbox(5mm,invisible));

我希望你能将其改编成你的动画。顺便说一句,我对最近发现的 Edwards 曲线及其在密码学中的应用印象深刻。

渐近线富有浓郁的数学味道!

更新动画版

在此处输入图片描述

// x.asy >>> x.pdf >>> making GIF ưith ImageMagick command in the command line window
// magick -density 200 x.pdf -alpha remove x.gif
unitsize(2cm);
import contour;
import animate;

typedef real function(real, real);
function f(real d) {
return new real(real x, real y) {
return x^2 + y^2 -1+ d*x^2*y^2;
};
}
real a=1.25;
draw(box((a,a),(-a,-a)),invisible); 
draw((a,0)--(-a,0)^^(0,a)--(0,-a),gray); 
animation A;

for(real d=360; d > -1; d -= 5) {
save();
guide[][] Edwards = contour(f(d), a=(-1,-1), b=(1,1), new real[] {0},nx=200,operator..);
draw(Edwards[0],blue);
label("$d = $ "+string(d),(-a+.2, -a+.2),align=E);
A.add();
restore();
}
erase();
A.movie();

答案2

我已经通过编程技巧解决了我的问题;

real g(real x, real y, real d) {
    
    return (x^2 + y^2 + d * x);
}

animation A=animation(global=false);
for(int i=300; i != 1; i -= 1) {

    erase();

    real f(real x, real y) {
        
        return g(x, y, i);
    }

    guide[][] thegraphs = contour(f, a=(-2,-2), b=(2,2), new real[] {0});

    draw(thegraphs[0]);

    A.add(BBox(1cm, nullpen));
}
erase();
A.movie(delay=240);

这是爱德华兹曲线的动画;

在此处输入图片描述

相关内容