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分稳有: ...
随机推荐
- js写的5秒钟倒计时跳转
使用js实现几秒以后倒计时跳转,这个在某些特殊情况下还是比较实用的,下面为大家介绍下具体的实现步骤,感兴趣的朋友不要错过 代码如下: <html> <head> < ...
- JS与Struts标签page
<html> <html:link name="map" page="/xxx/xxx/xxx_delete_do.do" ...
- sublime 中文乱码
一.安装Package Control 使用Sublime Text2首先就要安装Package Control,这样就能使用丰富的插件包了 (1)访问Package Control站点按照提示复 ...
- Git分支管理
一.Git分支的使用 查看分支: git branch 创建分支: git branch branch1 切换到branch1 git checkout branch1 再用git branch查看, ...
- etl学习系列1——etl工具安装
ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可 ...
- Kali2.0VMwareTools安装
安装完系统后,配置好apt源,然后执行下列语句可成功安装VMwareTools工具,可实现本机与虚拟机之间的文件复制等功能: apt-get install open-vm-tools-desktop ...
- Objective-C数据类型之id,SEL,BOOL,nil,NULL和NSNull
id id是指向Objective-C对象的指针,等价于C语言中的void*,可以映射任何对象指针指向他,或者映射它指向其他的对象.常见的id类型就是类的delegate属性. SEL SEL类型是 ...
- golang flag包
go flag 包用来解析命令行参数,通过一个简单的例子来了解下 package main import ( "flag" "fmt" ) fu ...
- 【转】MAPI over HTTP协议
这是一篇非常详细和精彩的介绍MAPI over HTTP协议英文博文.原文地址如下: http://blogs.technet.com/b/exchange/archive/2014/05/09/ou ...
- 在Windows上运行InfoPi
一.安装Python Python官网的下载页面: https://www.python.org/downloads/ 请下载Python 3.4或以上版本. (Python 3.5已不再支持Win ...