用MAYA绘画函数图像
笔者遇到这样一个问题,笔者一个数学系的同学有一个混沌函数的图像画不出来,问我能不能帮忙用计算机画画。笔者没有Matlab或Mapple的使用经验,于是考虑使用MAYA的MEL来绘制。实验发现,MAYA完全可以用来绘画数学函数图像。
这里笔者给出一个简单的函数如下:
x=(60-t)*sin(t);
y=(60-t)*cos(t);
z=3-3t;
0 <= t <= 16PI
我们使用MEL来绘制出该函数的图像,如图,可以看到是个逐渐收缩的螺旋线。
图 用MEL来绘制出函数的图像
绘制函数图像的MEL代码如下,修改函数定义,该MEL还可以绘制其他函数的图像。
/////////////////////////////////////////////////////////
//created by hmaya at 2006.8
//绘画函数的图像
//x=(60-t)*sin(t);
//y=(60-t)*cos(t);
//z=3-3t;
//t->[0,16PI]
//参数说明:
//proc drawFn(float $v_min,float $v_max,float $step,string $curveName)
//————-x最小值——x最大值——–步长——-曲线名称——
/////////////////////////////////////////////////////////
proc drawFn(float $v_min,float $v_max,float $step,string $curveName){
int $count_point = ($v_max – $v_min)/$step;
//==================画线======================//
curve -d 1 -p -2 1 0 -p 0 2 0 -p 1 1 0 -k 0 -k 1 -k 2 -n curve_temp;
rebuildCurve -ch 1 -rpo 1 -rt 0 -end 1 -kr 2 -kcp 0 -kep 0 -kt 0 -s ($count_point-1) -d 1 -tol 0.01 "curve_temp";
//===============定义数学函数=====================//
float $t;
int $n=0;
for($t=$v_min;$t<=$v_max;$t=$t+$step)
{
float $value_x[];
float $value_y[];
float $value_z[];
$value_x[$n]=(60-$t)*sin($t);
$value_z[$n]=(60-$t)*cos($t);
$value_y[$n]= 3-3*$t;
move -a $value_x[$n] $value_y[$n] $value_z[$n] curve_temp.ep[$n];
$n++;
}//end for $t
rename curve_temp $curveName;
}//end proc
//Run Proc
drawFn(0,50,0.1,"FnCurve");
我爱无名花