Lu图形库Lu2D
目 录
1 什么是Lu2D |
|
2 Lu2D函数 |
|
lu2d::FunTimer | 使用计时器定时执行函数 |
lu2d::Plot | 动态绘制一元函数及数组图形 |
lu2d::PlotExe | 向Plot发送执行函数命令并刷新图形 |
lu2d::RGB(r,g,b) | 定义绘图颜色。r,g,b分别表示红色值、绿色值和蓝色值。r,g,b取值范围均为0~255。 |
Lu2D64.dll是一个Lu扩展动态库,主要包含一些绘制2D图形的函数。多线程动态绘制图形是Lu2D的基本特点。
在Lu2D中的函数是通过二级函数命名空间“lu2d”输出的,所有函数均具有类似“lu2d::Plot(...)”的格式。使用!!!using("lu2d");可简化Lu2D中的函数访问。
Lu2D64.dll需要MLu64.dll的支持。
[返回页首] lu2d::FunTimer(bAutoClose):使用计时器定时执行函数
bAutoClose:若bAutoClose=lu2d::auto,程序退出时将自动关闭窗口;若bAutoClose=lu2d::hand,程序退出时需手动关闭窗口。可以缺省该参数,相当于bAutoClose=lu2d::auto。
返回值:0。
说明:最多设置三个同时运行的计时器,每个计时器定时执行一个对应的全局函数。若全局函数返回false,将销毁对应的计时器,该全局函数也不再执行。
计时器窗口启动后,可以打开计时器设置窗口,如下所示:
[例子1] 先编译运行以下代码,然后按上面的计时器窗口进行设置,点击按钮,观察运行情况,注意运行结果在哪里输出。
~~~:::a() = o{"执行函数a!\r\n"},true; //必须定义为全局函数,前面的~~~表示只编译,不运行
~~~:::b() = o{"执行函数b!\r\n"},true;
~~~:::c() = o{"执行函数c!\r\n"},true;
lu2d::FunTimer[]; //启动定时器窗口
[例子2] 由全局函数自身控制运行次数。
~~~:::a(:static,k) = o{"执行函数a!\r\n"},if[++k>=5,return(false)],true; //全局函数a只运行5次
~~~:::b() = o{"执行函数b!\r\n"},true;
~~~:::c() = o{"执行函数c!\r\n"},true;
lu2d::FunTimer[];
[返回页首] lu2d::Plot(Item1,Attribute1,Value1,Attribute2,Value2,...,Item2,Attribute3,Value3,Attribute4,Value4,... ...):动态绘制一元函数及数组图形
Plot的参数有三种类型:
(1)以I开头的参数为项目,例如Ix表示要设置X轴的绘图范围,Iufun表示要绘制一元函数图形等等;
(2)以A开头的参数为项目的属性,例如Acolor表示要设置曲线的颜色;
(3)以V开头的参数为属性的值,例如Vred表示曲线是红色的。
所有参数的说明见下表:
I 类型的参数及用法 | 说 明 |
lu2d::Iclear | 初始化绘图设置。仅在需要时使用该参数。若缺省该参数,将保留以前的设置。如果使用该参数,该参数应放在最前面。 |
lu2d::Iauto | 程序退出时自动关闭Plot窗口。这是缺省设置。 |
lu2d::Ihand | 程序退出时手动关闭Plot窗口。 |
lu2d::Inoshow | 仅进行一些设置,不启动Plot窗口。若缺省该参数,Plot函数将启动Plot窗口。 |
lu2d::Ixdynamic : bDynamic | 若bDynamic=true,则X轴绘图区间是动态的。若缺省该参数,相当于bDynamic=false。仅用于iarray、oarray类型的图形。 |
lu2d::Iydynamic : bDynamic | 若bDynamic=true,则Y轴绘图区间是动态的,将自动绘制自变量范围内的函数完整图形。若缺省该参数,相当于bDynamic=true。 |
lu2d::Ix : Xmin,Xmax | 设置X轴绘图区间。 |
lu2d::Iy : Ymin,Ymax | 设置Y轴绘图区间。仅仅进行设置,Y轴绘图区间是否固定,取决于Iydynamic参数。 |
lu2d::Igarray : hFor,... ...(其他属性设置) | 绘制普通数组图形。hFor为三元函数句柄,该函数具有f(x,y,n)的形式:x和y为等长的luData一维数组,n为需要绘制的数组元素个数 (n不能超过数组长度)。 |
lu2d::Iiarray : hFor,... ...(其他属性设置) | 内部计时器控制绘制数组图形。hFor为四元函数句柄,该函数具有f(x,y,n,t)的形式:x和y为等长的luData一维数组,n为需要绘制的数组元素个数(n不能超过数组长度),t返回当前时间。若f(x,y,n,t)返回false,不再定时执行该函数。 |
lu2d::Ioarray : hFor,... ...(其他属性设置) | 外部(计时器)控制绘制数组图形。hFor为四元函数句柄,该函数具有f(x,y,n,t)的形式:x和y为等长的luData一维数组,n为需要绘制的数组元素个数 (n不能超过数组长度),t返回当前时间。 |
lu2d::Iufun : hFor,... ...(其他属性设置) | 可缺省lu2d::Iufun。绘制一元函数图形。hFor为一元函数句柄,该函数具有f(x)的形式。 |
lu2d::Iifun : hFor,... ...(其他属性设置) | 可缺省lu2d::Iifun。绘制一元隐函数图形。hFor为二元函数句柄,该函数具有f(x,y)的形式。可能需要调整绘图点数Adots为合适的数值,才能得到理想的图形。 |
lu2d::Ipfun : hFor,... ...(其他属性设置) | 可缺省lu2d::Ipfun。绘制含参变量的函数图形。hFor为三元函数句柄,该函数具有f(u,x,y)的形式,u为参变量,x返回x(u)的值,y返回y(u)的值 。 |
lu2d::Itimer : bRun,Ellapse | 设置内部计时器。若bRun=true,则启动绘图窗口后立即启动计时器;否则在绘图窗口手动启动计时器。Ellapse为计时间隔(毫秒)。 由于计时器可通过计时器窗口设置,故很少直接使用该函数。 |
lu2d::Isetpara : hFor,dx | 设置可通过参数修改窗口修改的参数。hFor为一元函数句柄,该函数具有x(dx::x)= x=x+dx,x;的形式:通过增量dx修改模块变量x,并返回x的值。为了便于区分参数,通常使函数x和模块变量x具有相同的名字。 |
lu2d::Ititle : "标题" | 设置图形标题。 |
lu2d::Ilable : "X轴说明","Y轴说明" | 设置X轴及Y轴说明。 |
lu2d::Igrid : bDraw | 是否绘制网格。bDraw非0时绘制。缺省是不绘制。 |
lu2d::Iaxisratio : xRatio,yRatio | 坐标轴比率。显示坐标轴数字时所乘的系数。缺省是1。 |
lu2d::Iaxisnums : num | 坐标轴数字个数。缺省是10。 |
lu2d::Iaxisdigits : num | 坐标轴数字个数。缺省是3。 |
lu2d::Iborderpixels : num | 边沿像素数目。缺省是30。 |
lu2d::Iaxisshape : Vaxisshape | 坐标轴形状。有Vaxisnormal、Vaxissquare、Vaxisequal三种形状。默认是Vaxisnormal。 |
A 类型的参数及用法 | 说 明 |
lu2d::Aline | 绘制曲线图。这是缺省设置(Iifun除外)。 |
lu2d::Adot | 绘制散点图。Iifun类型图形的缺省设置。 |
lu2d::Acut,bcut | 设置是否将绘图区域以外的点绘制到边界上。若bcut非0,不绘制到边界;否则绘制到边界。若缺省该参数,相当于bcut非0。 |
lu2d::Adots,n | 设置绘图点数。仅用于Iufun、Iifun和Ipfun类型的图形。若缺省该参数,对Iufun和Ipfun图形,默认绘制500个点;对Iifun图形,默认绘制100个点。 |
lu2d::Adotsmax,n | 设置绘图点数最大数。仅用于Iifun类型的图形。若缺省该参数,默认最多绘制10000个点。 |
lu2d::Arange,min,max | 设置Iifun和Ipfun类型图形的参数变化范围。Iifun类型函数具有f(x,y)的形式,该参数用于设置y的估计变化范围,允许min==max,若缺省该参数,min和max取Y轴绘图区间(即Iy的设定值);Ipfun类型函数具有f(u,x,y)的形式,该参数用于设置u的变化范围。 |
lu2d::Aprecision,eps | 设置Iifun类型隐函数的求解精度。若缺省该参数,默认求解精度为1e-6。 |
lu2d::Acolor,Vcolor | 设置曲线(点)的颜色。曲线的默认值为黑色;点的默认值为黑色。 |
lu2d::Athick,Vthick | 设置曲线粗细或点的大小。曲线的默认值为0;点的默认值为5。 |
lu2d::Ashape,Vshape | 设置曲线(点)的形状。曲线的默认值为实线;点的默认值为实心点。 |
lu2d::Alegend,"曲线(点)标记" | 设置曲线(点)的标记。将显示为图例。相同的标记仅显示一次,但图例重叠。 |
V 类型的参数及用法 | 说 明 |
lu2d::Vsolid | 曲线形状为实线。 |
lu2d::Vdash | 曲线形状为虚线。 |
lu2d::Vdashdot | 曲线形状为点线。 |
lu2d::Vdashdotdot | 曲线形状为点划线。 |
lu2d::Vnull | 曲线形状为无。 |
lu2d::Vinsideframe | 曲线形状为实线(边框线)。 |
lu2d::Vsdot | 点形状为实心圆点。 |
lu2d::Vcircle | 点形状为空心圆。 |
lu2d::Vfork | 点形状为×。 |
lu2d::Vcross | 点形状为+。 |
lu2d::Vpozi | 点形状为米字。 |
lu2d::Vsquare | 点形状为矩形。 |
lu2d::Vdiamond | 点形状为菱形。 |
lu2d::Vupt | 点形状为上三角。 |
lu2d::Vdpt | 点形状为下三角。 |
lu2d::Vlpt | 点形状为左三角。 |
lu2d::Vrpt | 点形状为右三角。 |
lu2d::Vpentagram | 点形状为五角星。 |
lu2d::Vhexagram | 点形状为六角星。 |
lu2d::Vred | 红色。 |
lu2d::Vyellow | 黄色。 |
lu2d::Vgreen | 绿色。 |
lu2d::Vblue | 蓝色。 |
lu2d::Vgray | 灰色。 |
lu2d::Vblack | 黑色。 |
lu2d::Vaxisnormal | 坐标轴正常显示方式。 |
lu2d::Vaxissquare | X轴和Y轴的单位长度相同。 |
lu2d::Vaxisequal | 坐标轴图框呈正方形。 |
Plot函数其他用法 | 说 明 |
lu2d::Plot[] | 启动绘图窗口,程序退出时将自动关闭该窗口。在进行所有设置(使用Inoshow参数)后,才能调用该函数。 |
返回值:0。
运行错误:1:不可识别的参数类型标识;2:参数不匹配;3:参数不符合要求;4:非法的函数句柄;5:内存错误 ;6:非法是字符串参数;7:函数的参数个数太多或者太少。
说明:
目前Plot函数支持三种函数图形:
(1)Igarray类型的数组,Iufun、Iifun和Ipfun类型的函数。此类图形仅在通过菜单命令更改设置时更新数据(例如改变了X轴的最小值),内部计时器及外部控制对此毫无影响。
(2)Iiarray类型的数组。此类图形的更新仅受内部计时器的控制。
(3)Ioarray类型的数组。此类图形的更新仅受外部(计时器)的控制。
Plot函数的运行机制如下图所示:
Plot函数的基础用法:
(1)Plot函数的简单用法
f(x)=sin[10*x]; //一元函数
g(x)=x*sin[10*x]; //一元函数
lu2d::Plot[@f, @g]; //绘制函数f和g的图形
这种用法虽然简单,但需要通过菜单设置图形的属性,例如:X轴的范围、曲线的颜色等等。
通过菜单只能设置图形的部分属性,以下的例子都是通过脚本设置图形属性的。
(2)Iclear和Ix选项
!!!using("lu2d"); //使用命名空间lu2d
f(x)=sin[10*x]; //一元函数
g(x)=x*sin[10*x]; //一元函数
Plot[Iclear, Ix : -5.,5., @f, @g]; //绘制函数f和g的图形,Iclear将清除以前的设置(通常要使用该参数),Ix指出X轴绘图范围
(3)分步进行设置
!!!using("lu2d"); //使用命名空间lu2d
f(x)=sin[10*x]; //一元函数
g(x)=x*sin[10*x]; //一元函数
Plot[Iclear]; //Iclear将清除以前的设置,否则以前的设置会被本次图形绘制产生影响
Plot[Ix : -5.,5.]; //Ix指出X轴绘图范围
Plot[@f, @g]; //绘制函数f和g的图形
(4)隐函数图形
!!!using("lu2d");
f(x,y)=(x^2+y^2)^3-36*(x^2-y^2)^2; //二元函数确定了一个隐函数
Plot[Iclear, Ix : -8.,8., Igrid : true]; //Igrid指出是否绘制网格
Plot[@f, Arange,-8.,8., Adots,200]; //Arange指出Y的可能的变化范围,通常不能省略该参数;Adot指出绘图点数,绘图点数越多越准确
友情提示:隐函数绘制时,调整Arange的范围大小有助于获得更准确的图形。
(5)绘制含参变量的函数
!!!using("lu2d");
f(u,x,y)= x=u*sin[u],y=u*cos[u]^2; //三元函数确定了一个含参变量的函数,第一个参数u是参变量,x和y的返回值确定了一个点
lu2d::Plot[Iclear, Ix : -9.,9., @f, Arange,-9.,9.]; //Arange指出参变量u的变化范围
Plot函数的例子:
[例子1] 一元函数图形绘制
!!!using("lu2d"); //使用命名空间lu2d
f(x)=sin[x]; //函数定义
g(x)=x*sin[x]; //函数定义
Plot{Iclear, Ix : -5.,5., //设置X轴绘图范围
Iufun : @f, //绘制函数f的图形
Iufun : @g,Adot,Adots,100 //绘制函数g的图形,将绘制散点图,绘制100个点
};
本例近乎等效的矢量化代码如下:
!!!using("lu2d","math");
(::x,y1,y2,max)= max=100, x=linspace(-5.,5.,max), y1=sin(x), y2=x.*sin(x);
f(xx,yy,n::x,y1,max)= xx=x,yy=y1,n=max;
g(xx,yy,n::x,y2,max)= xx=x,yy=y2,n=max;
Plot{Iclear, Ix : -5., 5.,
Igarray : @f, //绘制普通数组图形,绘制为曲线图
Igarray : @g,Adot //绘制普通数组图形,绘制为散点图
};
本例近乎等效的隐函数图形绘制代码为:
!!!using("lu2d");
f(x,y)=sin[x]-y; //隐函数定义
g(x,y)=x*sin[x]-y; //隐函数定义
Plot{Iclear, Ix : -5.,5.,
Iifun : @f,
Iifun : @g
};
图形如下所示:
在Plot窗口,打开“曲线设置”窗口,设置曲线属性;打开“参数设置”窗口,设置X轴及Y轴变化范围;打开“选择数据”窗口,选择若干数据(也可在绘图区域双击鼠标左键选择数据)。
[例子2] 一元函数图形绘制并显示标题、坐标轴及图例
!!!using("lu2d");
f(x)=sin[x];
ff(x)=f[x];
g(x)=x*sin[x];
gg(x)=g[x];
Plot{Iclear, Ix : -5.,5.,
Iufun : @f, Alegend,"sin[x]",Acolor,Vgreen, //绘制函数f的图形 并显示图例
Iufun : @ff,Alegend,"sin[x]",Acolor,Vred,Adot,Adots,100, //绘制函数ff的图形并显示图例,将绘制散点图,绘制100个点
Iufun : @g, Alegend,"x*sin[x]",Acolor,RGB(0,255,0), //绘制函数g的图形 并显示图例
Iufun : @gg,Alegend,"x*sin[x]",Acolor,Vblue,Adot,Adots,100, //绘制函数gg的图形并显示图例,将绘制散点图,绘制100个点
Ititle : "Plot演示程序", //显示标题
Ilable : "t /℃","V /m^3" //显示坐标轴说明
};
图形如下所示:
在Plot窗口,打开“曲线设置”窗口,设置曲线属性;打开“参数设置”窗口,设置X轴及Y轴变化范围;打开“选择数据”窗口,选择若干数据(也可在绘图区域双击鼠标左键选择数据)。
[例子3] 一元函数及含参变量函数图形绘制
!!!using("lu2d");
f(x)=sin[x];
g(u,x,y)= x=u*sin[u],y=u*cos[u]^2;
Plot{Iclear, Ix : -9.,9.,
Iufun : @f,Acolor,Vred, //绘制函数f的图形,颜色是红色的
Ipfun : @g,Arange,-9.,9. //绘制函数g的图形,参变量的变化范围是 -9~9
};
图形如下所示:
在Plot窗口,打开“曲线设置”窗口,设置曲线属性;打开“参数设置”窗口,设置X轴变化范围;打开“选择数据”窗口,选择若干数据(也可在绘图区域双击鼠标左键选择数据)。
[例子4] 通过参数控制函数图形
!!!using("lu2d");
init(::A,B,C)= A=2.,B=1.,C=0.;//初始化模块变量
A(x::A)= A=A+x; //修改模块变量A的函数
B(x::B)= B=B+x; //修改模块变量B的函数
C(x::C)= C=C+x; //修改模块变量C的函数
f(x::A,B,C)=A*sin[B*x+C];
g(u,x,y::A,B)= x=u*sin[u+A],y=u*cos[u*B]^2;
Plot{Iclear, Ix : -5.,5.,
Iufun : @f,Acolor,Vred,
Ipfun : @g,Arange,-3.,3.,
Isetpara : @A,0.5, //使参数A可动态修改
Isetpara : @B,0.5, //使参数B可动态修改
Isetpara : @C,0.5 //使参数C可动态修改
};
图形如下所示(其动态效果需通过参数控制演示):
在Plot窗口,打开“曲线设置”窗口,设置曲线属性;打开“参数设置”窗口,设置X轴变化范围;打开“选择数据”窗口,选择若干数据(也可在绘图区域双击鼠标左键选择数据)。
[例子5] 普通数组图形绘制
!!!using("lu2d","math");
init(::A,B)= A=ra1[-9.5, -9, -7, -6.5, -5, -3, -2, -1.2, 0, 1.5, 2, 3, 5, 6, 7.7, 8, 8.2, 8.6, 9, 10],
B=ra1[5, -9, 7, 6.5, -5, -3, 12, 1.2, 0, 11.5, -9, -3, 5, -6, 7.7, -8, 5.2, -8.6, -9, 7];
f(x,y,n::A,B)= x=A,y=B,n=15;
ff(x,y,n)= f(&x,&y,&n);
g(x,y,n::A,B)= x=B,y=A,n=15;
Plot{Iclear, Ix : -12.,12.,
Igarray : @f, //绘制数组为曲线
Igarray : @ff,Adot, //绘制数组为散点图
Igarray : @g,Ashape,Vdash,Acolor,Vred //绘制数组为曲线
};
图形如下所示:
在Plot窗口,打开“曲线设置”窗口,设置曲线属性;打开“参数设置”窗口,设置X轴变化范围;打开“选择数据”窗口,选择若干数据(也可在绘图区域双击鼠标左键选择数据)。
[例子6] 内部计时器控制的数组图形绘制
!!!using("lu2d","math");
init(::A,B)= A=ra1[-9.5, -9, -7, -6.5, -5, -3, -2, -1.2, 0, 1.5, 2, 3, 5, 6, 7.7, 8, 8.2, 8.6, 9, 10],
B=ra1[5, -9, 7, 6.5, -5, -3, 12, 1.2, 0, 11.5, -9, -3, 5, -6, 7.7, -8, 5.2, -8.6, -9, 7];
f(x,y,n,t:static,i:A,B)= x=A,y=B,n=++i%20,if[i>50,return(false)],true; //函数f只运行50次
ff(x,y,n,t)= f(&x,&y,&n,&t);
g(x,y,n,t:static,i:A,B)= x=B,y=A,n=++i%20,true;
Plot{Iclear, Ix : -12.,12.,
Iiarray : @f,
Iiarray : @ff,Adot,
Iiarray : @g,Ashape,Vdash,Acolor,Vred
};
图形如下所示(其动态效果需通过内部计时器控制演示):
在Plot窗口,打开“曲线设置”窗口,设置曲线属性(曲线粗细和颜色);打开“计时器设置”窗口,点击开始按钮,观察动态图形。
[例子7] 外部(计时器)控制的数组图形绘制,横轴固定不变
!!!using("lu2d","math");
init(::A,B)= A=ra1[-9.5, -9, -7, -6.5, -5, -3, -2, -1.2, 0, 1.5, 2, 3, 5, 6, 7.7, 8, 8.2, 8.6, 9, 10],
B=ra1[5, -9, 7, 6.5, -5, -3, 12, 1.2, 0, 11.5, -9, -3, 5, -6, 7.7, -8, 5.2, -8.6, -9, 7];
f(x,y,n,t:static,i:A,B)= x=A,y=B,n=++i%20;
ff(x,y,n,t)= f(&x,&y,&n,&t);
g(x,y,n,t:static,i:A,B)= x=B,y=A,n=++i%20;
Plot{Iclear, Ix : -12.,12.,
Iiarray : @f,
Iiarray : @ff,Adot,
Iiarray : @g,Ashape,Vdash,Acolor,Vred
};
~~~:::a(:static,k) = PlotExe[],if[++k>=50,return(false)],true; //全局函数a只运行50次
~~~:::b() = PlotExe[],true;
FunTimer[]; //启动定时器
图形如下所示(其动态效果需通过外部计时器控制演示):
在Plot窗口,打开“曲线设置”窗口,设置曲线属性(曲线粗细和颜色);在FunTimer窗口,打开“计时器设置”窗口, 在计时器1的全局函数名输入窗口输入“a”,点击开始按钮,观察动态图形,直至图形自动停止更新;在计时器2的全局函数名输入窗口输入“b”,点击开始按钮,观察动态图形,该动态图形不会自动停止。
[例子8] 外部(计时器)控制的数组图形绘制,横轴动态更新
!!!using("lu2d","math");
init(::A,B)= A=ra1[-9.5, -9, -7, -6.5, -5, -3, -2, -1.2, 0, 1.5, 2, 3, 5, 6, 7.7, 8, 8.2, 8.6, 9, 10],
B=ra1[5, -9, 7, 6.5, -5, -3, 12, 1.2, 0, 11.5, -9, -3, 5, -6, 7.7, -8, 5.2, -8.6, -9, 7];
f(x,y,n,t:static,i:A,B)= x=A,y=B,n=++i%20;
ff(x,y,n,t)= f(&x,&y,&n,&t);
Plot{Iclear, Ixdynamic : true, //X轴是动态的
Ioarray : @f,
Ioarray : @ff,Adot,Acolor,Vred
};
~~~:::a(:static,k) = PlotExe[],if[++k>=50,return(false)],true;
~~~:::b() = PlotExe[],true;
FunTimer[];
图形如下所示(其动态效果需通过外部计时器控制演示):
在Plot窗口,打开“曲线设置”窗口,设置曲线属性(曲线粗细和颜色);在FunTimer窗口,打开“计时器设置”窗口, 在计时器1的全局函数名输入窗口输入“a”,点击开始按钮,观察动态图形,直至图形自动停止更新;在计时器2的全局函数名输入窗口输入“b”,点击开始按钮,观察动态图形,该动态图形不会自动停止。
[例子9] 内部计时器控制演示动态图形
!!!using("lu2d","math");
init(::A,B,max)= max=500, A=new[real_s, max], B=new[real_s, max];
f(x,y,n,t:i,u,d,static,k:A,B,max)=
{
x=A,y=B,n=++k%(max+1), t=0.,
u=-9.,d=18./max,i=0,(i<n).while{
x[i]=u*sin[u], y[i]=u*cos[u]^2,
u=u+d, i++
},
true
};
Plot{Iclear, Ixdynamic : true, Itimer : true, 100,
Iiarray : @f,Adot,Ashape,Vdiamond,Acolor,Vred
};
图形如下所示(直接运行程序即可动态演示):
[例子10] 内部计时器控制演示动态图形:旋轮线动画
!!!using("lu2d","math");
init(::A,B,C,D,max)= max=200, A=new[real_s, max+1], B=new[real_s, max+1], C=new[real_s, max], D=new[real_s, max];
f(x,y,n,t:i,u,d,static,k:A,B,max)=
{
x=A,y=B,n=[++k%(max+1)], t=0.,
u=0.,d=15./(max-1),i=0,(i<n).while{
x[i]=[u-sin(u)], y[i]=[1-cos(u)],
u=u+d, i++
},
x[i]=u, y[i]=1., n++,
true
};
g(x,y,n,t:i,u,d,static,k,v:C,D,max)=
{
x=C, y=D, n=max, t=0.,
if[1==[++k%(max+1)], v=0.],
u=0.,d=2*3.1416/(max-1),i=0,(i<n).while{
x[i]=v+cos(u), y[i]=1+sin(u),
u=u+d, i++
},
v=v+15./(max-1), true
};
Plot{Iclear, Ix : 0.,15., Iy : 0.,2., Iydynamic : false, Itimer : true, 100, Iaxisshape : Vaxisequal,
Iiarray : @f,Acolor,Vred,
Iiarray : @g,Acolor,Vblue
};
图形如下所示:
[例子11] 隐函数图形(x取1.5~10,y取2附近):f(x,y)=ln(3.5*x^y)+x-y^x-(sin(y-x))^2+0.6-(x+y)^(0.1*x)/x;
!!!using("lu2d");
f(x,y)=ln(3.5*x^y)+x-y^x-(sin(y-x))^2+0.6-(x+y)^(0.1*x)/x;
Plot{Iclear, Ix : 1.5,8.,
Iifun : @f,Arange,2.,2. //y取2附近
};
图形如下所示:
[例子12] 隐函数图形(x取-8~8,y取-8~8附近):f(x,y)=(x^2+y^2)^3-36*(x^2-y^2)^2;
!!!using("lu2d");
f(x,y)=(x^2+y^2)^3-36*(x^2-y^2)^2;
Plot{Iclear, Ix : -8.,8., Iaxisshape : Vaxissquare,
Iifun : @f,Arange,-8.,8. //y取-8~8
};
图形如下所示:
[例子13] 隐函数图形(x取-5~5,y取-5~5附近):f(x,y)=cos(x*y);
!!!using("lu2d");
f(x,y)=cos(x*y);
Plot{Iclear, Ix : -5.,5., Iy : -5.,5., Iydynamic : false, Igrid : true,
Iifun : @f, Acolor,Vblue, Adots,300
};
图形如下所示:
[返回页首] lu2d::PlotExe():向Plot发送执行函数命令并刷新图形
说明:该函数用于执行用lu2d::Ioarray注册到Plot的绘图函数,可在任意线程中通过该函数控制Plot中图形的刷新。
版权所有© Lu程序设计
2002-2013,保留所有权利
E-mail: forcal@sina.com
QQ:630715621
最近更新:
2013年09月10日