libGdx #4 数学库(1) Vector2

Vector2,顾名思义就是二维向量。

预备知识:矢量

何为向量?最基本的来说,就是一组数。二维向量,就是两个数。
两个数,可以表示一个点,也可以表示一条有向线段。
为了区分,在这节课中,将数学意义上的有向线段称为“矢量”,而将此处用来储存和计算数据的Vector2称为“向量”

将一个矢量的起点平移到原点,其终点的坐标(如例中A(61.27, 50.69))就代表了这一个矢量。
同样,一个点可以表示为一段从原点指向这个点的矢量。

两个矢量的加法,直接将其平移至首尾相接,从第一个矢量的起点指向第二个矢量的终点的矢量就是他们的和。
在坐标系下,只要将两个矢量的X、Y分量简单地相加就可以了。
将一个点坐标和一个矢量相加,就得到了这个点向 矢量方向 平移 矢量长度 之后得到的点的坐标。
如上节课中,

1
Center.add(Velocity);

就可以达到位置移动的效果。

将要减去的矢量绕起点旋转180°,再相加即可。
在坐标系下,旋转180度就是X、Y均取其相反数,变成-X -Y。
因此相减只要将两个矢量的X Y分量分别相减即可。

矢量的旋转就是绕着起点旋转。
矢量可以和一个数相乘,此时为等比例缩放。

矢量和矢量的乘法比较复杂,我们暂且不说。

Vector2类

  1. 构造函数:

    new Vector2(); 创建一个(x, y) = (0, 0)的向量
    new Vector2(float x, float y); 用指定的(x, y)创建一个向量
    new Vector2(Vector2 another); 复制一个向量
    
  2. vector2.cpy() 赋值一个新的Vector2对象,与new Vector2(Vector2)效果相同,写起来比较简便。
  3. vector2.add(Vector2 another) 将两个向量相加。注意:vector2的值会改变为两者的和。
    vector2.add(float x, float y) 将向量的X Y分量分别加上x y。注意:vector2的值会改变为两者的和。
  4. vector2.sub(Vector2 another) 将两个向量相减。注意:vector2的值会改变为两者的差。
    vector2.sub(float x, float y) 将向量的X Y分量分别减去x y。注意:vector2的值会改变为两者的差。
  5. vector2.nor() 将向量长度缩放为1,即变成单位向量,方向不变。这个操作一般不对点坐标使用,只对矢量使用。
  6. vector2.scl(float scalar) 将向量缩放为原来的scalar倍,即乘法。
  7. vector2.rotate(float degrees) 将向量旋转一定角度,单位是度而不是弧度。
  8. vector2.set(float x, float y) 将向量赋值为x y。

以上的所有操作在改变vector2的值的同时,会将其返回,因此可以连着写,比如我需要在X Y加1后放大为2倍:

Vector2 vector2 = new Vector2(10, 80);
System.out.println(vector2.add(1, 1).scl(2));
//安卓中这样的输出会被输出到Logcat中,可以在Eclipse内查看
//当前vector2的值:(22, 162)

也可以通过vector2.x vector2.y直接获取和改变X Y分量的大小。注意大小写

  1. vector2.len() 获取向量大小(长度)。计算公式是:sqrt(X^2+Y^2)(sqrt表示开根号)
    由于开根号需要时间,在比较时可以使用vector2.len2()获取长度的平方进行比较,节省一定的时间。
  2. vector2.angle() 获取向量和X轴之间的角度。

其他的函数还有很多,但最常用的就是这些了。我们在用到时可能会提一提,在这里就不说了。
提醒:手机性能有限,不建议过多使用cpy()和构造函数创建新的临时Vector2进行计算。

原文:大专栏  libGdx #4 数学库(1) Vector2

原文地址:https://www.cnblogs.com/chinatrump/p/11584620.html

时间: 2024-10-13 10:14:29

libGdx #4 数学库(1) Vector2的相关文章

XNA数学库

XNA Math Vectors 在direct3D 9 和10中,包含3D数学库的D3DX库支持向量和其他核心类型的计算.在direct11中,D3DX库不在包含3D数学库,取而代之的是XNA数学库.XNA利用的是特殊的硬件寄存器.在windows环境中,XNA数学库使用SSE2(Streaming SIMD Extension 2)指令集.它使用128-bits大小的SIMD(single instruction multiple data)寄存器,可以用一个指令操作4个32-bits浮点型

Lua 笔记--数学库

一.数学库 --获取系统时间 print(os.time()) --调用math.sin函数 print(math.sin(30)) --[[将角度转换成弧度 math.deg(x) --将弧度转换成角度 math.rad(x) ]] --[[指数函数.对数函数 math.exp(x) math.log(x) ]] --取整函数 local n = 3.14 print(math.floor(n)) --向下取整 print(math.ceil(n)) --向上取整 --取最大值.最小值 pri

DirectX11 学习笔记6 - 使用D3DXMATH数学库的一个例子

这个例子是在之前的例子基础上 ,把之前d3dx10math数学库换成了最新的d3dxmath.优点就不说了.先上效果图 全部代码.以及效果文件 文件结构 全部代码: 按照上图的文件顺序 #pragma once #include <D3DX10math.h> #include <xnamath.h> class XCamera { public: XCamera() { m_positionX = 0.0f; m_positionY = 0.0f; m_positionZ = 0.

Lua_第17 章 数学库

第17 章 数学库 在这一章中(以下关于标准库的几章中相同)我的主要目的不是对每个函数给出完整地说明,而是告诉你标准库可以提供什么功能.为了可以清楚地说明问题,我可能 会忽略一些小的选项或者行为.基本的思想是激发你的好奇心,这些好奇之处可能在參考于冊中找到答案. 数学库由算术函数的标准集合组成.比方三角函数库(sin, cos, tan, asin, acos, etc.), 幂指函数(exp, log,  log10),舍入函数(floor,  ceil).max.min.加上一个变量 pi.

最强数学库GSL(GNU Scientific Library) Qt环境下部署

1.前言 GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,有超过1000个函数,该库提供了关于数学计算的很多方面,Matlab的大部分函数几乎都能借助它实现,可以在数值计算中省却很多事情.关于GSL的详细功能.GSL的功能及相关头文件的介绍可以见此偏文章:http://blog.csdn.net/augusdi/article/details/8834182,或者看看这位仁兄的blog:http://www.cnblogs.com/Jedimaster/

Chapter 18_0 数学库

从今天起,开始接触Lua的标准库.一路走来,从最基本的变量.函数.迭代器.协同程序到稍微复杂的元表.元方法.环境.模块,以及最后被整蒙了的对象编程.继承.类.弱引用table.垃圾回收终结器.只要坚持下去,会慢慢吃透的! 数学库这一章讲的不多,更多详细介绍参考Lua手册. math(数学)库由一组标准的数学函数构成,三角函数.指数.对数函数.取整函数.生成伪随机数的函数.以及变量pi和huge等等. 所有的三角函数都使用弧度单位,可以使用函数deg和rad来转换角度和弧度. 比如要使用角度单位:

稀疏矩阵解题数学库 -- UMFPACK

UMFPACK就是求解类似于Ax=b这样问题的一个库,来自佛罗里达州立大学.可以直接到http://www.cise.ufl.edu/research/sparse/umfpack/去下载对应的包然后编译得到Windows下的lib,包含到自己的工程就可以了. 什么是UMFPACK UMFPACK是专门求解类似于Ax=b这样的稀疏矩阵方程的一个库,一般情况下A 是稀疏非对称的矩阵.它是基于非对称的多波前算法( Unsymmetric-pattern MultiFrontal method )对稀

&lt;泛&gt; C++3D数学库设计详解 简单光学几何 &amp;&amp; 随机向量生成

// 注:本内容为作者原创,禁止在其他网站复述内容以及用于商业盈利,如需引用,请标明出处:http://www.cnblogs.com/lv_anchoret/  Preface 当初写这个库,是为了支持光线追踪的学习,所以,学完第一本书,这时候,我们整合一些物理光学方面的运算,封装到我们的泛型库里面 新库增加的目录: --lvgm ----opticsfunc.hpp ----randfunc.cpp  Ready 需要大家拥有之前的向量库做支持 我们这一篇涉及到的库文件比较少 我们这一篇涉及

对MSVS下编译ARPACK数学库的一点补充说明

这周项目需要编译ARPACK库,感谢该博主的博文中的具体指导:“Visual studio 2015 +Windows10 配置ARPACK,用ARPACK求解特征值特征向量”,https://blog.csdn.net/barcelona941017/article/details/79727784. 由于是在公司内网下编译及其它情况,产生了一些方法上的差异,现注明之. 公司内网计算机开发环境是:Windows 7 + MSVS 2013 Update 5. 1. 下载: 原博文需要下载Min