当前位置:首页 > 企业招商 >

向量是个神奇的东西

来源:原点资讯(www.yd166.com)时间:2023-06-19 04:25:32作者:YD166手机阅读>>

向量是个神奇的东西,(1)

游离在平面中的像素

我们把所有的运动公式都封装在了dot类中,虽说实现了我们的当时需求,但是如果引申到一些方向性的东西的时候,就会显得苍白而无力。

相信很多自学的小伙伴都想学习web前端,可以关注小编后私信【学习】可以免费领取学习地址/案例教程/2018最新的一套学习教程,让学习有方向。

平面中的指向标(vector2)

向量确实是一个神奇的东西,当坐标系确定了之后,向量不仅仅可以看作是一个坐标点,还可以看做是一段距离,同时还具有方向性,这就对于我们在平面中的定向操作就提供了很大的帮助。

  1. 定义一个二维向量类

function vector2(x,y) { //当前的坐标的x,y this.x=x; this.y=y; }

  1. 向量的移动

当x2与y2都为0的时候,也就是存在于坐标原点时,相减之后还会是(x1,y1),这也是为什么我说它不仅可以代表一个坐标,还可以代表一段距离

vector2.prototype.move = function(vec2) { this.x =vec2.x; this.y =vec2.y; };

  1. 把向量单位化
  2. 单位向量,可以理解成在一段向量上,长度为1的向量

vector2.prototype.normalize = function(vec2) { var x=vec2.x-this.x; var y=vec2.y-this.y; //以上是为了将当前坐标转换为原点,从而生成一段新的向量 return { //返回一个单位向量 x:x/Math.sqrt(x*x y*y), y:y/Math.sqrt(x*x y*y) } };

如果对于向量不熟悉的可以去看一看向量的公式,也许你看着会有一点晕,那么我来举一个例子。

(1,1)这是一个二维的向量,我可以用它来代表一个坐标,也可以代表它到原点的距离,同时也可以代表从原点到该点的方向。

到目前,一个简单的向量类就已经足够我们去了解向量在图形中的运用了。

拥有向量的粒子类

现在,我们就可以对之前的粒子类进行重写

  1. 当粒子遇上向量

function dot(x,y,ax=0,ay=0,color="black") { //用向量来替代之前的纯坐标 this.site=new vector2(x,y); //初始时的目标坐标向量既是当前坐标向量 this.end=new vector2(x,y); //速度全部交由系统来调整 this.vx=0; this.vy=0; //加速度受外界力影响 this.ax=ax; this.ay=ay; this.color=color; //设置水平与竖直方向的值,具体作用下面有讲 this.direction={ hor:0, ver:0 } this.ctx={}; }

  1. 在实现的时候,我们需要知道什么是受我们直接影响的,什么是受我们间接影响的,这样可以可以在实现的实现的时候更具有联动性,把更多的计算交由计算机去处理,可以大大避免一些不必要的误操作。
  2. 最终点的设置

dot.prototype.setEnd = function(vec2) { this.end=vec2; this.vx=this.site.normalize(this.end).x; this.vy=this.site.normalize(this.end).y; if(vec2.x>this.site.x){this.direction.hor=1} if(vec2.x<this.site.x){this.direction.hor=-1} if(vec2.y>this.site.y){this.direction.ver=-1} if(vec2.y<this.site.y){this.direction.ver=1} };

这里会发现我们的方向速度量是取的位移向量的单位向量,这里的原因是X=VT,当时间一定时,速度可以视作位移上的单位距离,然后将其方向化,也就获得了方向速度。

这里我将粒子的初始位置与目标位置做了对比,获得了相对而言的上下或者左右,并且使用1或者-1来分别代替下右跟上左,有部分人不知道这里为什么是下右跟上左,这是因为在屏幕上的y轴的计算是以下方问正方向的,这也为什么我们在绘制的时候是用(100,100)而不是(100,-100)

向量是个神奇的东西,(2)

粒子的移动

dot.prototype.move = function() { this.vy =this.ay*t; this.vx =this.ax*t; var hor=""; var ver=""; //对取整的方式进行判断 switch (this.direction.hor) { case 1: hor='floor'; break; case 0: hor='floor'; break; case -1: hor='ceil'; default: break; } switch (this.direction.ver) { case 1: ver='ceil'; break; case 0: ver='floor'; break; case -1: ver='floor'; default: break; } if(Math[hor](this.site.x)!=this.end.x||Math[ver](this.site.y)!=this.end.y){ this.site.move(new vector2(this.vx,this.vy)); } };

移动的基本公式上一节也有基础的介绍,这里直接用的是带加速度的,v=v0 at(v0是初速度,v是匀变速t时间之后的速度)在位置判断的时候我使用了向下取整的方法,是因为在做单位向量的时候会出现带根号的数,为了便于判断,我们就需要对位置的坐标进行取整,这个时候,我们就需要根据粒子点在目标点的方位来决定是向上还是向下取整。取整之后就可以进行判断是否达到目标位置,如果没有就会继续调用move的命令来不断更新坐标位置。

相信很多自学的小伙伴都想学习web前端,可以关注小编后私信【学习】可以免费领取学习地址/案例教程/2018最新的一套学习教程,让学习有方向。

  1. 注意:
  2. 需要注意的是,我进行了取整,这也就意味着目标值要是整数,像素不存在小数位的像素,但是计算机在渲染如1.5px的时候,还是渲染出一些奇怪的东西,可以用以下的代码做一下测试,你就清楚那不存在的小数位像素到底是什么。

ctx.fillStyle='red'; ctx.fillRect(1,2,1,1); ctx.fillRect(1,1,1.5,1); ctx.fillRect(1,3,1.2,1); ctx.fill();

  1. 后续工作

到目前为止,我们已经实现的粒子特效中最主要的部分,我们可以利用这个粒子类来实现粒子几乎常见运动,如 匀速运动 匀变速/非匀变速运动 圆周运动 甚至是轨迹运动,是不是感觉那些看起来飞来飞去的特效开始有逻辑可循了

栏目热文

简述一个向量在实际生活中的应用

简述一个向量在实际生活中的应用

一、(1)初中所学的力和位移都是既有大小又有方向的量,在高中将它们抽象成向量;(2)在初中学习的两直线的平行、垂直及其夹...

2023-06-19 04:50:06查看全文 >>

生活中的向量举例

生活中的向量举例

来源:公众号数学经纬网作者:林木 物理学家、航空管制员以及社会学家都有一个共同的东西:向量。它们到底是什么?又为什么这么...

2023-06-19 04:19:10查看全文 >>

向量在实际应用的例子(简述一个向量在实际生活中的应用)

向量在实际应用的例子(简述一个向量在实际生活中的应用)

高中数学人教版把平面向量作为处理平面问题的工具(如两点距离公式,向量共线定理,向量垂直,定比分点坐标公式,平移,夹角等)...

2023-06-19 04:38:27查看全文 >>

生活中属于向量的例子(生活中有哪些向量的例子)

生活中属于向量的例子(生活中有哪些向量的例子)

数学中的“向量”,也是物理里的“矢量”。生活中无处不在,数学也是一门语言,它是思维与生活的媒介。生活中的数学模型极其美丽...

2023-06-19 04:10:01查看全文 >>

智力快车早教机怎么连接手机(智力快车早教机没有图像怎么解决)

智力快车早教机怎么连接手机(智力快车早教机没有图像怎么解决)

目前新生儿的父母绝大多数是80、90后的年轻人,这些年轻的父母不仅背负了更多的生活压力,而且更加注重孩子的教育。在时间和...

2023-06-19 04:33:04查看全文 >>

智力快车早教机怎么安装其他软件

智力快车早教机怎么安装其他软件

随着AI技术的快速发展,机器人行业也发生了巨大变化,从传统的导引导购机器人,到主打家庭陪伴类的机器人,再到目前市面上火的...

2023-06-19 04:04:17查看全文 >>

智力快车早教机屏幕点不了

智力快车早教机屏幕点不了

一、教学触摸一体机的触摸屏无响应[故障现象]一台触摸屏不能工作,触摸任何部位都无响应。[故障分析处理]首先检查各接线接口...

2023-06-19 04:18:22查看全文 >>

智力快车早教机一直显示连接电脑

智力快车早教机一直显示连接电脑

面对快节奏的生活,父母给孩子的陪伴越来越少,不少家庭利用儿童机器人让孩子多了一个玩伴。现在市面上常见的儿童机器人,大部分...

2023-06-19 04:52:54查看全文 >>

文档排行