cocos2D-X Vec2类详解

cocos2D-X Vec2类详解:

一、类中基本数据成员

1.首先转到Vec2类的定义,在类定义上有一小段注释,翻译一下就是 : 定义一个2维的浮点坐标向量

在这里插入图片描述

2.看了全部源码后,发现该类只要public成员,没有private私有成员,

类中只定义了两个float变量x,y用来表示向量坐标,接下来慢慢看类中的这些函数声明.

在这里插入图片描述

二、构造析构函数

  1. Vec2()构造函数;

​ 没有任何的函数体,注释的意思是,构造一个新的坐标,且初始化成全为0的值

在这里插入图片描述

  1. Vect(const float* array)构造函数;

​ 传入一个float的数组,数组中的值必须是按x,y的顺序排的,通过这个数组的x,y坐标可以构建一个新向量

在这里插入图片描述

  1. Vec2(const Vec&2 p1,const Vec2& p2)构造函数;

​ 传入两个Vec向量,根据这两个向量可以构造出一个新的向量来描述这两个向量间的方向

在这里插入图片描述

  1. Vec2(const Vec2& copy)构造函数;

    传入一个Vec2向量,返回一个该向量的复制品.

在这里插入图片描述

  1. ~Vec2()析构函数;

​ 没有函数体,无含义.

在这里插入图片描述

三、成员函数

  1. inline bool isZero()const;

​ 接下来就是类中的函数成员,不再是构造析构函数了

​ 内联常量函数,返回真假,用来确定这个向量是否是全为0的向量,是就返回真,其他情况全为假.

在这里插入图片描述

  1. inline bool isOne()const;

​ 内联常量函数,返回真假,用来判断这个向量是否是全为1的向量,是返回真,其他情况全为假.与上面那个函数差不多一样的.

在这里插入图片描述

  1. static float angle(const Vec2& v1,const Vec2& v2);

​ 静态函数,返回值float,传参两个Vec2向量

​ 返回这两个向量间的角度(单位弧度)

在这里插入图片描述

  1. inline void add(const Vec2& v);

​ 内联无返回值函数,传参一个Vec2向量,将所传向量加到当前向量

在这里插入图片描述

  1. static void add(const Vev2& v2,const Vec2& v2, Ver2* dst);

​ 静态无返回值函数,传参两个Vec2向量和一个Vec2指针,将这两个向量相加后的结果存储到传入的Vec2* dst指针中.

在这里插入图片描述

  1. void clamp(const Vec2& min, const Vec2& max);

​ 无返回值,传参两个Vec2向量,将当前向量限制在传入的两个向量大小之间.

在这里插入图片描述

  1. static void clamp(const Vec2& v, const Vec2& min, const Vec2& max, Vec2* dst);

    静态无返回值,传入一个向量v,一个最小向量min,一个最大向量max,然后将v限制在min和max之间,并将最后得到的向量结果
    存储在传入的dst指针中.
    在这里插入图片描述

  2. float distance(const Vec2& v)const;

​ 返回值float,传入一个向量,返回当前向量和传入向量之间的距离.

在这里插入图片描述

  1. inline float distanceSquared(const Vec2& v) const;

    内联,返回值为float,用来返回当前向量和传入向量的距离的平方值,这个函数用在没有必要获取两向量间的精准距离的时候,
    比方说需要大致比较这不同向量间的距离远近就这个用这个函数

    在这里插入图片描述

  2. inline float dot(const Vec2& v) const;

    内联,返回值为float,返回由传入向量和当前向量的点积.

    在这里插入图片描述

  3. static float dot(const Vec2& v1, const Vec2& v2);

    静态函数,返回传入向量v1和传入向量v2的点积.

    在这里插入图片描述

  4. float length() const;

    返回当前向量的模长.

    在这里插入图片描述

  5. inline float lengthSquared() const;

    内联,返回值float,返回模长的平方.这个函数主要用在不需要获取精准的向量模长时,比方说用来比较不同向量的模长.

    在这里插入图片描述

  6. inline void negate();

    内联,将当前向量方向反转.

    在这里插入图片描述

  7. void normalize();

    将当前坐标单位化;

    在这里插入图片描述

  8. Vec2 getNormalized() const;

    返回单位化后的坐标.

    在这里插入图片描述

  9. inline void scale(float scalar);

    内联无返回值,传入一个float变量,按这个变量大小缩放当前向量的所有元素。

    在这里插入图片描述

  10. inline void scale(const Vec2& scale);

    内联无返回值,传入一个向量scale,按传入向量缩放当前向量.

    在这里插入图片描述

  11. void rotate(const Vec2& point, float angle);

    传入一个向量和一个弧度,将传入向量按所给弧度旋转.

    在这里插入图片描述

  12. inline void set(float xx, float yy);

    内联无返回值,将当前向量的坐标重设为传入的坐标值.

    在这里插入图片描述

  13. void set(const float* array);

    将当前向量重设为传入的数组中的x,y的值,数组中的值依次为x,y的值.

    在这里插入图片描述

  14. inline void set(const Vec2& v);

    内联无返回值,将当前向量重设为传入向量的值.

    在这里插入图片描述

  15. inline void set(const Vec2& p1, const Vec2& p2);

    内联无返回值,将当前向量重设为由传入的两个向量构成的方向向量(p1指向p2)

    在这里插入图片描述

  16. inline void setZero();

    将当前向量重设为全为0.

    在这里插入图片描述

  17. inline void subtract(const Vec2& v);

    内联无返回值,使当前向量的值改为减去传入向量v后的值.

    在这里插入图片描述

  18. static void subtract(const Vec2& v1, const Vec2& v2, Vec2* dst);

    静态无返回值,将v1向量减去v2向量后的值保存在传入的dst指针中.

    在这里插入图片描述

  19. inline void smooth(const Vec2& target, float elapsedTime, float responseTime);

    内联无返回值,传入参数1目标向量,参数2调用之间的所需时间,参数3响应时间;

    这个函数我并没有完全理解它是什么意思,以下是翻译:

    使用平滑函数向给定目标更新此向量。给定的响应时间决定平滑量(滞后)。较长的响应时间会产生更平滑的结果和更大的滞后。

    在这里插入图片描述

四、运算符重载:

  1. inline const Vec2 operator+(const Vec2& v) const;

​ 重载"+"号,返回当前向量加上传入向量后产生的新向量

在这里插入图片描述

  1. inline Vec2& operator+=(const Vec2& v);

    重载"+="号,返回当前向量加上传入向量后产生的新向量的引用;

在这里插入图片描述

  1. inline const Vec2 operator-(const Vec2& v) const;

    重载"-"号,返回当前向量减去传入向量后产生的新向量

在这里插入图片描述

  1. inline Vec2& operator-=(const Vec2& v);

    重载"-="号,返回当前向量减去传入向量后产生的心向量的引用;

在这里插入图片描述

  1. inline const Vec2 operator-() const;

    重载"-",返回当前向量的反向量,这不会对当前向量有任何修改;

在这里插入图片描述

  1. inline const Vec2 operator*(float s) const;

    重载"*",返回当前向量按传入s倍数缩放比列后的新向量,这不会对当前向量有任何修改;

在这里插入图片描述

  1. inline Vec2& operator*=(float s);

    重载"*=",返回当前向量按传入s倍数缩放比列后的新向量引用.

在这里插入图片描述

  1. inline const Vec2 operator/(float s) const;

重载"/",返回当前向量按传入s倍数缩小比例后的新向量.

在这里插入图片描述

  1. inline bool operator<(const Vec2& v) const;

    重载"<",用于判断传入向量与当前向量的大小

在这里插入图片描述

  1. inline bool operator>(const Vec2& v) const;

    重载">",用于判断传入向量与当前向量的大小

在这里插入图片描述

  1. inline bool operator==(const Vec2& v) const;

    重载"==",用于判断传入向量与当前向量的是否相等

在这里插入图片描述

  1. inline bool operator!=(const Vec2& v) const;

    重载"!=",用于判断传入向量与当前向量的是否不相等

在这里插入图片描述

到这里基本的函数都结束了,再往下是一些增加兼容性的函数,暂时不用管它.

五、静态常量成员

到最后,有一些定义的静态常量成员,分别代表了一些向量:

在这里插入图片描述

六、类外

1.定义了一个重载运算符"*"的函数,用来返回所给向量v和所给变量x的点积后的新向量.

在这里插入图片描述

2.将Vec2类型取名为Point,也就是说Point也就是Vec2类型.

在这里插入图片描述

七、整个Vec2类结束.

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浔汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值