cocos2d-x:懒人数学函数
做游戏开发,要用到比较多的数学计算,对于程序员来说,还是用一种懒一点的方法,cocos2d-x方便开发者投机取巧...提供了很多方便的的数学函数,方便我们的数学计算。以下是在网上收集到的一些常用的数学方法,分享给大家!
数学函数:
[c++]
ccp(x, y); // 以坐标x,y创建一个向量
ccpFromSize(s); // 以size s的width为x,height为y创建一个向量
ccp(x, y); // 以坐标x,y创建一个向量
ccpFromSize(s); // 以size s的width为x,height为y创建一个向量
CCPoint的加减乘除运算运算
[c++]
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是个浮点数
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是个浮点数
取中点:
[c++]
ccpMidpoint(v1, v2); // 等价 ccp( (v1.x + v2.x)/2, (v1.y + v2.y)/2 );
ccpMidpoint(v1, v2); // 等价 ccp( (v1.x + v2.x)/2, (v1.y + v2.y)/2 );
点乘、叉乘、投影:
[c++]
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上的投影向量
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上的投影向量
求长度、距离和各自的平方值:
[c++]
ccpLength(v) // 返回向量v的长度,即点v到原点的距离
ccpLengthSQ(v) // 返回向量v的长度的平方,即点v到原点的距离的平方
ccpDistance(v1, v2) // 返回点v1到点v2的距离
ccpDistanceSQ(v1, v2) // 返回点v1到点v2的距离的平方
ccpNormalize(v) // 返回v的标准化向量,就是长度为1
ccpLength(v) // 返回向量v的长度,即点v到原点的距离
ccpLengthSQ(v) // 返回向量v的长度的平方,即点v到原点的距离的平方
ccpDistance(v1, v2) // 返回点v1到点v2的距离
ccpDistanceSQ(v1, v2) // 返回点v1到点v2的距离的平方
ccpNormalize(v) // 返回v的标准化向量,就是长度为1
旋转、逆时针90度、顺时针90度:
[c++]
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(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度
配套的有向量和弧度的转换向量,还有一些角度相关的:
[c++]
ccpForAngle(a); // 返回一个角度为弧度a的标准向量
ccpToAngle(v); // 返回向量v的弧度
ccpAngle(a, b); // 返回a,b向量指示角度的差的弧度值
ccpRotateByAngle(v, pivot, angle) // 返回向量v以pivot为旋转轴点,按逆时针方向旋转angle弧度
ccpForAngle(a); // 返回一个角度为弧度a的标准向量
ccpToAngle(v); // 返回向量v的弧度
ccpAngle(a, b); // 返回a,b向量指示角度的差的弧度值
ccpRotateByAngle(v, pivot, angle) // 返回向量v以pivot为旋转轴点,按逆时针方向旋转angle弧度
线段相交的检测:
[c++]
ccpLineIntersect(p1, p2, p3, p4, &s, &t); // 返回p1为起点p2为终点线段1所在直线和p3为起点p4为终点线段2所在的直线是否相交,如果相交,参数s和t将返回交点在线段1、线段2上的比例
// 得到s和t可以通过 p1 + s * (p2 - p1) 或 p3 + t * (p4 - p3) 求得交点。
ccpSegmentIntersect(A, B C, D) // 返回线段A-B和线段C-D是否相交
ccpIntersectPoint(A, B, C, D) // 返回线段A-B和线段C-D的交点
ccpLineIntersect(p1, p2, p3, p4, &s, &t); // 返回p1为起点p2为终点线段1所在直线和p3为起点p4为终点线段2所在的直线是否相交,如果相交,参数s和t将返回交点在线段1、线段2上的比例
// 得到s和t可以通过 p1 + s * (p2 - p1) 或 p3 + t * (p4 - p3) 求得交点。
ccpSegmentIntersect(A, B C, D) // 返回线段A-B和线段C-D是否相交
ccpIntersectPoint(A, B, C, D) // 返回线段A-B和线段C-D的交点
其他有用的:
[c++]
CC_RADIANS_TO_DEGREES(a); // 弧度转角度
CC_DEGREES_TO_RADIANS(a); // 角度转弧度
CCRANDOM_0_1(); // 产生0到1之间的随机浮点数
CCRANDOM_MINUS1_1(); // 产生-1到1之间的随机浮点数
CC_RADIANS_TO_DEGREES(a); // 弧度转角度
CC_DEGREES_TO_RADIANS(a); // 角度转弧度
CCRANDOM_0_1(); // 产生0到1之间的随机浮点数
CCRANDOM_MINUS1_1(); // 产生-1到1之间的随机浮点数
cocos2d-x:懒人数学函数的更多相关文章
- Python进阶:生成器--懒人版本的迭代器
从容器.可迭代对象谈起 所有的容器都是可迭代的(iterable),迭代器提供了一个next方法.iter()返回一个迭代器,通过next()函数可以实现遍历. def is_iterable(par ...
- [超级懒人最简单法]iPhone 6 plus 适配切图方法分享(转载文章)
网络上已经有很多适配教程,可是看了半天总是半懂不懂..最后还是要综合多个教程再动动脑子动动手,最好有程序大哥帮你试一下(这得有多大的福气) 如果有跟我一样情况的: 1. 有人说用sketc ...
- Myth – 支持变量和数学函数的 CSS 预处理器
Myth 是一个预处理器,有点类似于 CSS polyfill .Myth 让你写纯粹的 CSS,同时还让你可以使用类似 LESS 和 Sass 的工具.您仍然可以使用变量和数学函数,就像你在其它预处 ...
- 20141031--SQL分组,数学函数,聚合函数
/* 通过代码操作:创建一个数据库,里面有一个学生信息表, 内容包括:学号,姓名,性别,体重,年龄,语数外三门课分数,班级 插入20条数据 执行以下查询操作: 1.查姓王的同学的信息 2.分别查每门课 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- hnust 懒人多动脑
问题 F: 懒人得多动脑 时间限制: 1 Sec 内存限制: 128 MB提交: 93 解决: 30[提交][状态][讨论版] 题目描述 小D的家A和学校B都恰好在以点F为焦点的双曲线上,而小D每 ...
- C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入
C# 嵌入dll 在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...
- 【前端】 在前端利用数学函数知识+box-shadow解波浪图形
序 今天正在刷数学函数相关题目,刷到了下面这篇文章,哇哦-有意思. 利用cos和sin实现复杂的曲线.传送门在下面. CSS 技巧一则 -- 在 CSS 中使用三角函数绘制曲线图形及展示动画 正巧在复 ...
- SCE信号期末复习省流小助手(懒人版)
XDU-SCE网信院信号期末复习省流小助手(懒人版) 本人根据西安电子科技大学网络与信息安全18年期末考试整理的考点和题型 以下题型代表了信号与系统课程的 精髓 若能掌握以下知识点和题型,80分稳有: ...
随机推荐
- Flex 监听浏览器关闭
在creationComplete的事件中,添加如下: if(ExternalInterface.available)//外部接口是否可用 { var js:String= " ...
- YII2的增删改查
insert into table (field1,field2)values('1','2');delete from table where condition update table s ...
- C语言数据结构之 简单选择排序
算法:设所排序序列的记录个数为n.i取1,2,-,n-1,从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出排序码最小的记录,与第i个记录交换.执行n-1趟 后就完成了记录序列的排序. 编译器: ...
- gulp使用
卸载插件:npm uninstall <name> [--save-dev]使用npm更新插件:npm update <name> [--save-dev]更新全部插件:npm ...
- css技术
CSS是英语Cascading Style Sheets(层叠样式表单)的缩写,它是一种用来表现HTML或 XML 等文件式样的计算机语言. CSS 目前最新版本为CSS2,能够真正做到网页表现与内容 ...
- 让xterm更舒服的设置
转自:http://codespider.is-programmer.com/posts/25247.html X11相关的配置位于/etc/X11下. xterm的配置是/etc/X11/app-d ...
- 替换节点及replaceEach方法
需求: 为所有的 li 节点添加 onclick 响应函数实现 city 子节点和 game 子节点对应位置的元素的互换 window.onload = function(){ //自定义互换两个节点 ...
- SQL增删改语句常用
创建table: create table tab_name( col1 type; 约束:主键-外键-非空-检查-唯一 col2 type; ); 删除表 : drop table tab_name ...
- Kindle DXG和Win10 64bits无法连接的问题
直入主题:换根数据线. 不要觉得答案简单,我就是不负责任的在调侃. 在得出这条答案之前,我的思路是,既然插上线以后,kindle的充电指示灯会亮,那就应该不是线的问题. 所以实际的过程是我安装了驱动之 ...
- Membership基本用法
MemberShip简介: Membership是Asp.Net框架,用于管理网站的用户Membership,角色Roles以及配置信息Profile. System.Web.Security.Mem ...