cocos2d-x 数学函数、常用宏整理(1)
来源:互联网 发布:专业录音软件下载 编辑:程序博客网 时间:2024/05/17 06:35
数学类
cocos2d-x 里使用最多的数学类型是CCPoint,一个点,本质上也是一个向量,对于向量和向量之间有很多的数学操作要做,oh我知道要干什么,也许我知道怎么求一个值但是不知道怎么求得高效(或者不知道),怎么办我能偷懒吗?那当然可以。这其实并不是一个懒的标准,因为有一些方法写多了也可能确实稍微有那么点麻烦,所以自然cocos2d提供了一套ccp系列来帮助我们完成很多的工作,也显示一下库程序员照顾开发程序员的懒惰精神(当然他们自己也用,他们也很懒)。
那我们首先创建向量
- ccp(x, y); // 以坐标x,y创建一个向量这个大家都知道。
- ccpFromSize(s); // 以size s的width为x,height为y创建一个向量
基本的加法、减法、取负、数乘
- ccpAdd(v1, v2); // 等价 ccp(v1.x+v2.x, v1.y+v2.y);
- ccpSub(v1, v2); // 等价 ccp(v1.x-v2.x, v1.y-v2.y);
- ccpNeg(v) // 等价 ccp(-v.x, -v.y);
- ccpMult(v, s); //等价 ccp(v.x * s, v.y * s); s是个浮点数嘛
取中点:本来也就一 ccpMult(ccpAdd(v1,v2), 0.5f) 的事,开发者说不要,我就是要少打几个字,好吧库程序员就给了一个方法
- ccpMidpoint(v1, v2); // 等价 ccp( (v1.x + v2.x)/2, (v1.y + v2.y)/2 );
点乘、叉乘、投影
- ccpDot(v1, v2); // 等价 v1.x * v2.x + v1.y * v2.y;
- ccpCross(v1, v2); // 等价 v1.x * v2.y - v1.y * v2.x;
- ccpProject(v1, v2) // 返回的是向量v1在向量v2上的投影向量
喜闻乐见求长度、距离和各自的平方值(在仅需要比较两个长度大小时使用长度平方,因为省去了开方这一步,效率要高不少,这就不光是程序员的懒了,懒得要有效率)
- ccpLength(v) // 返回向量v的长度,即点v到原点的距离
- ccpLengthSQ(v) // 返回向量v的长度的平方,即点v到原点的距离的平方
- ccpDistance(v1, v2) // 返回点v1到点v2的距离
- ccpDistanceSQ(v1, v2) // 返回点v1到点v2的距离的平方
- ccpNormalize(v) // 返回v的标准化向量,就是长度为1
旋转、逆时针90度、顺时针90度(90度的效率当然是更快的。。。同样懒得有效率)
- ccpRotate(v1, v2); // 向量v1旋转过向量v2的角度并且乘上向量v2的长度。当v2是一个长度为1的标准向量时就是正常的旋转了,可以配套地用ccpForAngle
- ccpPerp(v); // 等价于 ccp(-v.y, v.x); (因为opengl坐标系是左下角为原点,所以向量v是逆时针旋转90度)
- ccpRPerp(v); // 等价于 ccp(v.y, -v.x); 顺时针旋转90度
上面说到ccpRotate,配套的有向量和弧度的转换向量,还有一些角度相关的
- ccpForAngle(a); // 返回一个角度为弧度a的标准向量
- ccpToAngle(v); // 返回向量v的弧度
- ccpAngle(a, b); // 返回a,b向量指示角度的差的弧度值
- ccpRotateByAngle(v, pivot, angle) // 返回向量v以pivot为旋转轴点,按逆时针方向旋转angle弧度
数学方法没有列全,更多请直接查头文件CCPointExtension.h。基本该有的都有了。
当然数学不只有向量,还有一些其他的……这些也很经常用到。小懒一下。
- CC_RADIANS_TO_DEGREES(a); // 弧度转角度
- CC_DEGREES_TO_RADIANS(a); // 角度转弧度
- CCRANDOM_0_1(); // 产生0到1之间的随机浮点数
- CCRANDOM_MINUS1_1(); // 产生-1到1之间的随机浮点数
文章转载于: 热血枫叶 http://blog.csdn.net/rexuefengye/article/details/14518375
0 0
- cocos2d-x 数学函数、常用宏整理
- cocos2d-x 数学函数、常用宏整理(1)
- cocos2d-x 数学函数、常用宏整理(1)
- cocos2d-x 数学函数、常用宏整理(1)
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理
- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- cocos2d-x 数学函数、常用宏粗整理
- WPF listbox异步绑定数据IsAsync=True
- [转]Go程序GC优化经验分享
- C#发布项目编译的时候App.config文件可能会出的一种错误
- jira控制面板查看项目进展情况
- 初学者如何理解网络协议(一)
- cocos2d-x 数学函数、常用宏整理(1)
- 用JS操作CSS滤镜,注意IE、firefox、chrome浏览器对滤镜支持各不相同
- android获取手机内部存储空间和外部存储空间 && 如何确定一个应用的安装位置
- Eclipse快捷键大全
- 压缩感知应用
- ARM Linux启动参数修改
- 6、手机防盗--密码设置
- mysql sock找不到
- 删除N天前的log4j日志