试着用面向对象的方式用canvas去实现一些东西,

主要代码

function Bubble() {}; //构造函数Bubble.prototype = {init: function () { //基本配置this.x = random(0, w); //小球x轴初始位置this.y = random(0, h); //小球y轴初始位置this.r = random(20, 100); //小球的半径范围this.color = 'rgba(' + random(0, 255) + ',' + random(0, 255) + ',' + random(0, 255) + ',' + random(0.1, 1) +')';this.vx = random(-1, 1);this.vy = random(-1, 1);this.isMove = false},draw: function () { //绘制小球canCon.beginPath(); //把笔抬起来,beginPath() 方法开始一条路径,或重置当前的路径。canCon.fillStyle = this.color;canCon.arc(this.x, this.y, this.r, 0, Math.PI * 2); //圆心的位置,xy,半径,画圆canCon.fill();},move: function () {if(this.isMove) {this.isMove = falsereturn;}this.x += this.vx;this.y += this.vy;// 检测小球与小球碰撞var isCollision = collision(this);if (!isCollision) {}//检测小球与边框碰撞if (this.x - this.r < 0 || this.x + this.r > w) {this.vx = -this.vx}if (this.y - this.r < 0 || this.y + this.r > h) {this.vy = -this.vy}this.draw();}}function collision (c_ball) {var find = falsevar isCollision = falsefor (var ball of aBubble) {if(ball != c_ball) {var dxv = c_ball.x + c_ball.vx - (ball.x + ball.vx);var dyv = c_ball.y + c_ball.vy - (ball.y + ball.vy);var distance = Math.sqrt(dxv * dxv + dyv * dyv);if (distance <= (c_ball.r + ball.r)) {var dvx = c_ball.vx - ball.vx;var dvy = c_ball.vy - ball.vy;var dx = c_ball.x - ball.x;var dy = c_ball.y - ball.y;var xx_yy = dx * dx + dy * dy;var v_dvx = (dvx * dx * dx + dvy * dx * dy) / xx_yy;var v_dvy = (dvy * dy * dy + dvx * dx * dy) / xx_yy;c_ball.vx = checkSpeed(c_ball.vx - v_dvx);c_ball.vy = checkSpeed(c_ball.vy - v_dvy);ball.vx = checkSpeed(ball.vx + v_dvx);ball.vy = checkSpeed(ball.vy + v_dvy);if (find) {//避免当前循环重复移动ball.isMove = true//避免闪烁ball.draw();}isCollision = true}} else {find = true}}return isCollision;}

源码在这里

https://download.csdn.net/download/shishuwei111/11244810

canvas 小球碰撞相关推荐

  1. Canvas+Js制作动量守恒的小球碰撞

    目的:通过js实现小球碰撞并实现动量守恒 canvas我们就不多说了,有用着呢. 我们可以通过canvas画2D图形(圆.方块.三角形等等)3D图形(球体.正方体等待). 当然这只是基础的皮毛而已,c ...

  2. 绘制canvas彩色泡泡小球碰撞

    globalCompositeOperation带来的不一样的烟花 一.知识点 1.动画: setInterval(             function(){                 d ...

  3. canvas小球连线碰撞效果 html+css+js

    先看效果(完整代码在底部): canvas小球连线碰撞完整源代码 html+css+js 这是我的B站地址~热烈欢迎 实现(看注释,可一步一步跟着实现): 0:定义标签: <h1>北极光之 ...

  4. pygame动画演示小球碰撞

    使用pygame实现动量定理的小球碰撞演示动画 动量定理我们在高中的时候就已经接触过了,是十分重要的物理定理.其中的完全弹性碰撞(机械能守恒)是十分典型的例子,机械能守恒和动量定理两个公式就可以推出小 ...

  5. 一个与小球碰撞有关的有趣问题

    -一个与小球碰撞有关的问题 -本人学号:16340300 -本人学院:数据科学与计算机学院 目录 看看这个问题 如何解决 解法 看看这个问题 如图,在光滑水平面上,有一个球A向墙运动,速度垂直于墙面, ...

  6. Java反弹球两球相撞_java实现小球碰撞反弹

    java实现小球碰撞反弹 java实现小球碰撞反弹 首先我们要在一个窗口里面显示这个功能,因此引入JFrame类然后创建一个窗口代码如下: JFrame win=new JFrame();//新建窗口 ...

  7. JS实现小球碰撞边界反弹-点击消失(详细解析实现思路)

    本篇文章给大家带来的是原生JS实现小球碰到边界就反弹,点击小球时小球被会销毁,并重新创建一个小球,让小球的数量一直保持在初始的数量,按照思路按步骤进行讲解,只需要源码的小伙伴可以定位到文本末尾直接复制 ...

  8. js 小球碰壁反弹and小球碰撞

    好像好几天没有更博了呢,最近有点变懒了,这样不好,不好~~我们要做热爱学习的好孩子,嘻嘻,今天下午补上... 我们在学习js的时候,一个很经典的案例就是小球的碰壁反弹效果啦~简单的小球碰壁效果可以慢慢 ...

  9. js小球碰撞js特效

    下载地址 小球碰撞特效.引用test.js文件.我目前做的是10个小球同时出现,你也可以根据你的需要进行修改.如果你想要小球随机出现的话,你只需要把58行的代码解注,然后57行的注释就行了.这个写法还 ...

  10. Simscape基础教程之实例(一)——使用Simscape三维物理仿真自由落体小球碰撞平面

    一. 简介 本实例使用MATLAB/Simulink里面的simscape,实现自由落体小球碰撞平面的三维物理仿真,可用于新手入门simscape的参考示例. 二. 准备工作 需要安装的工具箱 (1) ...

最新文章

  1. OKR能给公司和团队带来什么价值?
  2. Xamarin iOS开发实战上册-----2.2.2 使用代码添加视图
  3. JavaScript 中 JSON.parse()和JSON.stringify()
  4. 纯c语言实现动态分配多维数组的方法
  5. React Native之(var和let区别 )(简单解构)(map对象遍历)(可变顺序参数和不可以变顺序参数函数)
  6. 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?
  7. bzoj 2733: [HNOI2012]永无乡(线段树启发式合并)
  8. Cursor finalized without prior close()
  9. python好用的模块_Python中好用的模块们
  10. iis7部署WCF服务应用程序
  11. 带通滤波器中心频率带宽matlab,带通滤波器频率设置
  12. wine装通达信_通过wine使用通达信、钱龙、同花顺、大智慧软件 | 学步园
  13. 严格对角占优矩阵特征值_对角占优矩阵的性质.doc
  14. 通俗易懂的讲讲路由协议
  15. Unity学习:瓦片地图
  16. 第六章 利用深度Q学习来实现最优控制的智能体
  17. 【拜小白的机器学习】2-机器学习的种类与基本术语概念
  18. ubuntu14.04+caffe2
  19. 罗斯柴尔德投资公司增加对GBTC的投资
  20. 校园卡系统(需调试)

热门文章

  1. iOS AVPlayer支持播放的格式
  2. 东线报接口 全网一手线报全网(京东,淘宝,天猫)最全优惠信息
  3. 数字图像处理MFC程序设计之灰度图像的线性变换
  4. 小米上市之后的危与机
  5. c语言入门经典18个程序,c语言入门经典必背18个程序
  6. win7共享xp打印机_别麻烦了!局域网一键共享工具
  7. NTC热敏电阻测试和检验设备
  8. 阿里云短信sdk的懒人用法
  9. 动画图解:十大经典排序算法动画与解析,看我就够了(配代码完全版)
  10. 乐高ev3搭建图_你所不知道的乐高EV3发展史