百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

前端图形学(十三)——弹跳运动的深入之傲娇的小球

toyiye 2024-08-22 02:22 4 浏览 0 评论

欢迎来到【畅哥聊技术】前端图形学相关技术文章,更多精彩内容持续更新中,敬请关注。

前面我们说到了小球的弹跳运动,通过一个方向的加速度和摩擦力去影响小球的动画,其目标点也是一个固定不变的,似乎有些单调。

那么我们今天继续小球的弹跳运动的深入,先来看下面的示例:

相信以上的类似动画大家应该看见过很多,这样的动画很容易被大家所接受,原因很简单,因为它完全符合我们现实生活中的物理现象。

接下来我带着大家来分析一下这种动画的制作过程。

分析

  1. 小球是和我们的鼠标进行交互的,因此我们在兼听画布元素的鼠标移动事件,并获取鼠标相对于画布的坐标。
  2. 把鼠标转换后的坐标作为小球的运动目标点Target
  3. 定义弹跳系数,摩擦系数和重力。
  4. 分别计算X轴和Y轴的加速度。
  5. 分别将小球的速度*摩擦系数,这样才能便小球速度不断变小,最终停下来。
  6. 从上面的gif图可以看出,小球中心点和鼠标有一定的距离,这个距离我们就以重力去表示了。
  7. 最后去绘制小球和鼠标两点的连线。

核心代码:

//鼠标起始位置。
var mouse = {x:0,y:0};

//兼听画布的鼠标移动事件,并计算出鼠标相对于画布的坐标。
canvas.onmousemove = function(e){

		mouse.x = e.pageX - canvas.offsetLeft;
		mouse.y = e.pageY - canvas.offsetTop;
 
}

//定义弹动系数,摩擦系数,重力常量
var easeing = 0.15,k = .9,g = 15;

//两个方向的加速度的计算方法(和昨天一样)
var ax = (mouse.x - ball.x ) * easeing;
var ay = (mouse.y - ball.y ) * easeing;

//将加速度附加到小球的速度上
ball.vx += ax ;
ball.vy +=ay;

//给小球加上摩擦力的影响。
ball.vx *= k;
ball.vy *= k;

//将小球的最终速度作用在小球的xy属性上。
ball.x += ball.vx;
ball.y += ball.vy;

//由于小球和鼠标有重力的影响,所以我们给y轴的速度一个重力的作用。
ball.vy += g;

最终全部代码:

其实看代码数量并不多,大家刚开始可能是被鼠标晃晕了头,其实可以这样想,鼠标操作是一个循环的操作,假如鼠标就动一下,把这个过程的动画实现了,其它的就好办了。

总结:

  1. 其实不难发现,任何看看似复杂的动画,细心的去分析,拆解找到其中的原理,我们也可制作我们自己想要的动画。
  2. 任何项目的开发,动画的交互造成不能天马行空,一定要符合物理现象,只有这样才能被用户所接受。
  3. 物理学中的重力、摩擦力、加速度在图形学中被广泛应用。多尝试、理解方可熟能生巧。

以上就是今天的分享的内容,喜欢的点赞关注,不喜欢的解散。。。

这里是【畅哥聊技术】前端图形学相关技术文章,更多精彩内容持续更新中。。。

未完待续。。。

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码