热烈欢迎新会员,新手报到帖maxscript BUG和技巧收集场景助手3.0下载飞浪脚本零起点入门
返回列表 发帖

欢迎捐助本站:支付宝账号 cgplusplus@qq.com,谢谢支持!

[原创]飞浪脚本零起点入门系列(三) MAXScript算术表达式与赋值表达式

声明:本教程为CG++原创,转载请注明出处,谢谢合作:)

 

上一节:飞浪脚本零起点入门系列(二) MAXScript数据类型

飞浪脚本零起点入门系列(三) MAXScript算术表达式与赋值表达式

 

本节关键词:
+    -    *    /    ^    as    =    +=     -=     *=     /=


本节跟上节紧密联系,希望没学过程序的朋友把开始这几节一定要弄懂。你要是学过程序,了解一

下MAXScript的规则吧
算术表达式
MAXScript算术表达式与我们小学时学的算术一个道理,都是对数值进行运算如加、减、乘、除等

MAXScript数学运算符有:
+ 数学中的加号,如1+1,a+b
- 数学中的减号,如2-1,a-b
* 数学中的乘号,如5*6,a*b
/ 数学中的除号,如4/2,a/b
^ 数学中的幂运算,如2^6即2的6次方
as 强制类型转换,严格说这不是数学运算符,以后会发现as会用在很多地方。
好,现在打开MAXScript Listener试试以上数字运算:


运算符可以对数字进行运算,同时运算符左右还可以是函数调用或另外的数学表达式,即复合运算,

如:(a + b) / c; (sin x) * -d 。
as,具体表达式为: 操作数 as 类型,这里的类型就包括上节讲的部分数值类型,用法如下:

1.234 as integer --1.234是float类型数值,integer是整形数值,这句就是强制把1.234变为整

形数值,它不是四舍五入,而是直接将小数点后面的尾巴去掉,所以上面那句跟1.934 as

integer一个效果得到结果1。
123456789 as string --强制把数值123456789转化为字符常量,结果为"123456789"。
下面大家试试数值转换的结果:

 

我们知道,数学运算有优先级,以前背的口决:先算乘除,后算加减,有括号先算括号,那么在

MAXScript里面也是一样的,唯一不同的是,MAXScript运算里面只有小括号(),那么如果我想括

号里面再加括号怎么办呢?还是小括号。MAXScript会自动识别括号的级别,从最里层开始执行。

而中括号[],大括号{}则另有用途。数学运算的优先级从高到低如下:
操作数
函数调用 --如sin x,cos y
as
^ --右结合性
* 和 / --左结合性
+ 和 - --左结合性
混合运算 我们来练习一下上面的运算符号:


sin 45 * 5
(sin 45 * 5) as integer
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等等,因为他们已经被赋予了特殊含义。以下都是合法的变量名:
cgplusplus , sum, temp , box01 , btn_rename , mat_1 , RMB10W
虽然变量名可以随便取,但是建议还是取有一定含义的变量名,以后看到这个名字就知道,哦原

来它是代表这个意思,比如box01,一看就知道它指的是box,除非你一定要把一个sphere赋给它。

MAXScript变量名不区分大小写,即cgpp与CGpp是同一个变量名。
而以下不是合法变量名:
CG++ , MR.feilang , $1000 , Yao ming , zh-cn , cgplusplus.com , 520HEHE
赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如a = 1就是执行一次赋

值操作,或称赋值运算,把常量1赋给a,也可以将一个表达式赋给变量。注意,当你接触了程序

你就要知道,“=”是赋值运算符而不再是数学运算中的等于,程序中的等于符号是“==”即两

个于符号。
如下都是对变量进行赋值:


s = 1
sum =( 1 + 2 + 3 ) * 100
--赋值同时进行了运算
mystring = "welcome to cgplusplus.com!"

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 + 5)
n /= m - p 等同于n = n/(m - p)
下面出些题,大家思考一下,然后用MAXScript Listener执行一下看看结果。
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的值都进行了改变!
这些东西有点枯燥,但是学MAXScript却绕不过,刚接触程序可能有些概念一时难以理解,你也可

以在以后的学习中逐渐体会,学过程序的也请了解一下MAXScript的规则,毕竟它远不及C++那么

强大,如果你习惯用C++里面的自加“++”符号,到MAXScript就行不通了,它不认,呵呵~~~不过

MAXScript也有自己可爱的一面,比如美元符号$的使用就很奇妙!

 

下一节我们来点放松的,MAXScript对物体的操作,看怎么用MAXScript一个简单的语句操作MAX物

体,请继续关注!

 

第四节:MAXScript对物体的初步控制 

[此贴子已经被作者于2008-11-27 15:05:20编辑过]

附件: 您需要登录才可以下载或查看附件。没有帐号?注册  
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
日思日睿,笃志笃行!

欢迎捐助本站:支付宝账号 cgplusplus@qq.com,谢谢支持!

[求助]用低版本的MAX软件打开高版本的MAX文件

讲得很好哦。支持

TOP

欢迎捐助本站:支付宝账号 cgplusplus@qq.com,谢谢支持!

支持中。

TOP

支持了再说
简单生活 快乐就好

TOP

[em64]好啊

TOP

很好的教程,期待下一篇了.

很好的教程,期待下一篇了.

TOP

 偶也支持一下

TOP

下一篇。快,我要看下一篇

TOP

very good!

TOP

呵呵。。。不错的教程。、还出了一系列的。

TOP

返回列表