用MAYA绘画函数图像

用MAYA绘画函数图像

笔者遇到这样一个问题,笔者一个数学系的同学有一个混沌函数的图像画不出来,问我能不能帮忙用计算机画画。笔者没有MatlabMapple的使用经验,于是考虑使用MAYAMEL来绘制。实验发现,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");

 

作者: hmaya

developer!

看完不过瘾?点此向作者提问

《用MAYA绘画函数图像》有一个想法

发表评论

邮箱地址不会被公开。 必填项已用*标注