cocos2d-x节点(b2Math.h)API

本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-x节点(b2Math.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

//Box2d的公共模块中,包含的一个小巧而简便的向量矩阵的数学库。

//主要由以下内容:

//a)、向量,包括二维列向量和三维列向量

//b)、矩阵,包括2X2矩阵和3X3矩阵

//c)、旋度、扫描、和变换的实现

//d)、其他部分的实现

///cocos2d-x-3.0alpha0/external/Box2D/Common
//Box2d的公共模块中,包含的一个小巧而简便的向量矩阵的数学库。
//主要由以下内容:
//a)、向量,包括二维列向量和三维列向量
//b)、矩阵,包括2X2矩阵和3X3矩阵
//c)、旋度、扫描、和变换的实现
//d)、其他部分的实现


#ifndef B2_MATH_H
#define B2_MATH_H

#include <Box2D/Common/b2Settings.h>

#include <cmath>
#ifndef SHP
#include <cfloat>
#else
#include <float.h>
#endif
#include <cstddef>
#include <limits>

using namespace std;


/// 用来确保一个浮点数不是一个NaN或无穷大
//* 参数说明: x :数值
//* 返 回 值: true :有效
//false: 无效
inline bool b2IsValid(float32 x)
{
    if (x != x)
    {
        // NaN.
        return false;
    }

    float32 infinity = std::numeric_limits<float32>::infinity();
    return -infinity < x && x < infinity;
}
//一个近似且快速的平方根倒数算法[x^ (-1/2) ]
//可以参照 http://zh.wikipedia.org/wiki/平方根倒数速算法
//或 http://en.wikipedia.org/wiki/Fast_inverse_square_root
//* 参数说明: x :数值
//* 返 回 值: 平方根倒数
inline float32 b2InvSqrt(float32 x)
{
    union
    {
        float32 x;
        int32 i;
    } convert;

    convert.x = x;
    float32 xhalf = 0.5f * x;
    convert.i = 0x5f3759df - (convert.i >> 1);
    x = convert.x;
    x = x * (1.5f - xhalf * x * x); //第一次牛顿迭代  
    return x;
}
//平方根宏  
#define    b2Sqrt(x)    std::sqrt(x)
//对于任意不同时等于0的实参数x和y,
//atan2(y,x)所表达的意思是坐标原点为起点,
//指向(y,x)的射线在坐标平面上与x轴正方向之间的角的角度度
//参照 http://zh.wikipedia.org/wiki/Atan2
#define    b2Atan2(y, x)    std::atan2(y, x)

///2d列向量  
struct b2Vec2
{
    /// 构造函数,不做任何事,仅仅为了性能 
    b2Vec2() {}

    ///构造函数,构建使用的坐标 
    b2Vec2(float32 x, float32 y) : x(x), y(y) {}

    /// 将向量置0 
    void SetZero() { x = 0.0f; y = 0.0f; }

    /// 将向量设置成指定的坐标
    void Set(float32 x_, float32 y_) { x = x_; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值