自由者CG

标题: 零起点入门MAXScript(第三节) [打印本页]

作者: 有空    时间: 2015-11-16 16:09
标题: 零起点入门MAXScript(第三节)
算术表达式
MAXScript算术表达式就是对数值进行加、减、乘、除等运算。


MAXScript数学运算符有:
+ 数学中的加号,如1+1,a+b
-  数学中的减号,如2-1,a-b
* 数学中的乘号,如2*3,a*b
/  数学中的除号,如4/2,a/b
^ 数学中的幂运算,如2^6,即2的6次方。
as 强制类型转换,严格说这不是数学运算符,但他会用在很多地方。


接下来打开MAXScript侦听器,尝试数字运算:
(, 下载次数: 11)
运算符可以对数字进行运算,同时运算符左右还可以是函数调用或者其他的数学表达式,即复合运算,如(a+b)/c;(sin x)*-d。
as,具体表达式为:操作数as类型,这里的类型就包括上节讲的部分数值类型,用法如下:1.234 as integer —— 1.234是float类型数值,integer是整形数值,这句就是强制把1.234变为整形数值,直接将小数点后面的尾巴去掉,所以上面1.234 as integer和1.999 as integer会得到同样的结果1。

123456789 as string —— 强制把数值12345679转化为字符常量,结果为"123456789"。

下面大家打开MAXScript侦听器,尝试数值转换执行的结果:
(, 下载次数: 10)

我们知道,数学运算有优先级,如先乘除,后加减,有括号先算括号,在maxscript里也是一样的,唯一不同的是,maxscript运算里面只有小括号(),那么如果我想括号里面再加括号怎么办呢?--还是小括号。maxscript会自动识别括号的级别,从最里层开始执行。

而中括号[],大括号则另有用途。
数学运算的优先级从高到低如下:
操作数
函数调用 --如sin x,cos y
as
^            --右结合性
*和/        --左结合性
+和-       --左结合性
混合运算,我们来练习一下上面的运算符号:
(, 下载次数: 8)
3^8/"100" as float  --运算顺序为:先进行3^8运算,得到6561,后面as运算级别高于/,所以再进行"100" as float运算,得到100.0,最后才进行/运算,即6561/100.0,得到65.61。
2*pi*8^2  --pi是常量,即圆周率π,这句就是计算半径为8的圆的面积。
2*-9/e  --e是常量,即自然对数底


赋值表达式
先介绍一下变量,在运行程序的时候,值可以改变的量称为变量。一个变量应该有一个名字,即变量名,如果它的值改变了,你一喊它的名字,就知道它做了什么改变了。 给变量命名也要遵循一定的规则,与其它程序一样,变量名只能由字母、数字和下划线,3种字符组成,而且第一个字符必须为字母或下划线,而maxscript保留一些关键词是不能用作变量名的。如float,integer等等,因为他们已经被赋予了特殊含义,以下都是合法的变量名:
cg, sum, temp, box01, btn_rename, mat_1, RMB10W, _458n


虽然变量名可以随便取,但是建议还是取有一定含义的变量名,以后看到这个名字就知道是什么意思,比如box01,一看就知道它指的是box,除非你一定要把一个sphere赋给它。


maxscript变量名不区分大小写,即cg与CG是同一个变量名。
以下不是合法的变量名:
cg+-, mr.sun, $1000, yao mng, 5img


赋值符号"="就是赋值运算符,它的作用是将一个数据赋予给一个变量。如a=1就是执行一次赋值操作,或称赋值运算,"="是赋值运算符而不是数学运算中的等于,程序中的等于符号是"=="即两个等于符号。


如下图即是对变量进行赋值。


(, 下载次数: 6)


maxscript提供与c语言一样的复合赋值,这样提高了编程速度,简化程序。我们先看这样一个赋值:x = x+1就是将x的值增加1,如果之前你赋给x = 1,那么执行些语句后,x就变成了2,这样对于变量自己的增减操作特别方便,另如:s = s*25将s的原来的值乘以25后再赋给s,即现在的s是执行些语句之前的25倍。在以后程序中会经常用到这样的操作,程序也给我们提供了一个更简便的写法:x+= 1,等同于x = x+1,s *= 25等同于s = s*25。四个基本数学运算符+,-,*,/均可与"="结合起来,组成复合赋值符号,如:
a += 3 等同于 a = a+3
b -= 9 等同于b = b-9
x *= y+5 等同于 x = x*(y+50)
n /= m-p 等同于 n = n/(m-p)


下面出些题,大家思考一下,然后用maxscript侦听器执行一下,看看结果。
1. 1.8*5+6/2
2. 58/7 as float*35
3. 46*(9+12*(32-9))/"100" as float
以下假设先赋值a = 15
4. a += a
5. a -= 8
6. a*= 3+6
7. a /= a+a as float
注意每次执行后a的值都进行了什么改变!


这些基础必须打好,虽然有些枯燥!


————————本节完————————





欢迎光临 自由者CG (https://bbs.zhise168.com/) Powered by Discuz! X3.4