GraphPlot的几个使用技巧

上次介绍了用Lua做的个绘制二元等式或不等式的图像的软件,今天增加了输出图片的功能,下载地址还是原来的。下面介绍几个使用技巧,这也正是这个软件的有趣之处。

1. 求余和周期函数

利用求余可以将一个图形变为一系列的图形,举几个例子:

对直线的截距求余,y=x+d → (y-x)%d=0,例如:(y-x)%20 == 0

 

对直线的倾角求余,y=tgθx → atan(y/x)%θ=0,例如:abs(atan(y/x)%0.2)<0.005

 

对圆的半径求余,sqrt(x^2+y^2)=r → sqrt(x^2+y^2)%r=0, 例如:abs(sqrt(x^2+y^2)%10)<0.1

 

求余是一个周期函数,使用其他的周期函数也可以做,比如:abs(cos((x-y)/3)-1)<0.001

 

2. 平移和缩放

把f(x,y)=0水平方向平移a,竖直方向平移b后的方程是f(x-a,y-b)=0,缩放则是乘一个因子f(u*x, v*y)=0。

比如:(x/2-25)^2+(y-50)^2<200

3. 求绝对值,变换正负号,交换x和y

通过求绝对值,变换正负号,可以改变图形的对称性;交换x和y使图形旋转90度。

比如:abs(y+x^2)<0.1 or abs(x+y^2)<0.1

 

4. 不等式

使用不等号可以画面积,等式对精度要求比较高,画不等式则容易一些。

比如圆和圆环:(x+50)^2+y^2<900 or abs((x-50)^2+y^2-900)<100

通常用画很细的圆环作为画圆圈的近似。

 

5. 交集、并集、补集

用and求交集,or求并集,not求补集。

例如:((x+40)^2+y^2<900 or x^2+y^2<900) and not((x+40)^2+y^2<900 and x^2+y^2<900)

 

6. 自定义函数

可以在Favorites.lua文件中自定义函数,并用在表达式里。

比如定义:

function balls(x,y)
    
for n = 02*pi, pi/4 do
        
if (x-60*cos(n))^2+(y-60*sin(n))^2<100 then return true end
    
end
   
return false
end

绘制表达式:balls(x,y)

模拟极坐标,画心形:

function heart(x, y)
for t = 0, 2*pi, pi/40 do
if abs(x-16*sin(t)^3)<0.1 and abs(y-13*cos(t)+5*cos(2*t)+2*cos(3*t)+cos(4*t))<0.1 then
return true
end
end
return false
end

Favorite目录中加入{leafname = "heart", tip = "heart(x, y)", config = {Xmin=-20, Xmax=20, Ymin=-20,Ymax=20,Split=4}}

通过灵活地组合应用这些技巧,就可以画各种想要的图形。

 

posted @ 2011-07-17 14:19  刘俊峰  阅读(2142)  评论(0编辑  收藏  举报