Chapter1-运动

  • 效果演示:
  • 实现方法:
    • 构建Mover类:
    • draw函数中调用
    • 改变视效

效果演示:

实现方法:

这个实验主要参考的代码本色第一张最后一个例子, 其基本的原理是小球向着鼠标做加速运动。

构建Mover类:

Mover类中包含几个变量,location用来记录物体的位置信息,velocity为物体的运动速度,acceleration为物体运动的加速度。

class Mover
{PVector location;PVector velocity;PVector acceleration;float topspeed; Mover(){location =new PVector(random(width),random(height));velocity=new PVector(0,0);topspeed=4; }
}

在update函数中,取单位化小球位置和鼠标所在位置的向量作为加速度,进而对速度信息和位置信息进行更新。

void update(){PVector mouse =new PVector(mouseX,mouseY);PVector dir =PVector.sub(mouse,location);dir.normalize();dir.mult(0.5);velocity.add(dir);velocity.limit(topspeed);location.add(velocity);  }

在display函数中,在当前位置绘制小球。

void display(){stroke(0);fill(255);    ellipse(location.x,location.y,20,20);}

在display之前,要先进行边缘检测,判断小球是否运动到边界之外,当小球运动到边界时,让其从对侧边界按原速度运动。

void checkEdge(){if(location.x>width){location.x=0;}else if (location.x<0){location.x=width;}if(location.y>height){location.y=0;}else if (location.y<0){location.y=height;}}

draw函数中调用

随后在setup函数初始化100个小球,在update函数中让这100个小球试试运动。

void setup()
{background(255);for(int i=0;i<100;i++){movers[i]=new Mover();}
}
void draw()
{if(flag){for(Mover m : movers){m.update();m.checkEdge();m.display();}}
}

改变视效

 noStroke();fill(velocity.x*10+10,velocity.y*10+10);ellipse(location.x,location.y,velocity.x*10,velocity.y*10);

将小球的颜色和透明度与小球的位置以及速度相关联。既能看到在最开始看到的效果。

Chapter1-运动相关推荐

  1. 嵌入式操作系统风云录:历史演进与物联网未来Chapter1 第1章

    Chapter1 第1章 认识嵌入式操作系统 操作系统和物联网是今天大众熟悉的二个专业技术词汇.人们拿起智能手机就想到绿色小机器人-谷歌的Android操作系统:使用电脑的时候就想到了Windows操 ...

  2. Norlit OS —— 自制操作系统 第0章 热身运动

    0  热身运动 0.1         前言 开发操作系统是很多程序员的终极梦想,但是很多人认为这是不可能的,其实,只要有爱,什么事都能办到(但超能力这种事情的话估计只有学园都市[1]了吧). 操作系 ...

  3. 先进半导体材料与器件Chapter1

    Chapter1 先进半导体材料及器件基础 作者: Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo. ...

  4. 运动是性价比最高的投资

    小的时候,看到有人运动,不是很明白这是什么意思:长大后,随着知道的知识越来越多 .你就会发现,运动其实是性价比最高的投资:因为运动,可以让人变得越来越健康. 健康是你最大的财富,当你身体健康了,那么你 ...

  5. 自行车为什么前轮和后轮受到的摩擦力相反呢 自行车前轮后轮转动方向一样 自行车运动原理...

    后轮是主动轮是引擎(脚链子)给与的驱动使得后龙有向后传的趋势从而产生向前驱动的地面静摩擦(若地面完全光滑则后轮只会打滑不会再前进了). https://zhidao.baidu.com/questio ...

  6. 12,缓冲运动。匀速运动停止条件

    缓冲运动:iSpeed=(iTarget-oDiv.offsetLeft)/7;速度离目标点越远,速度越大,离目标点越近速度越小: 只支持1px是最小单位,没有0.5px.所以当iSpeed为小数时如 ...

  7. android 运动管理,使用 MotionLayout 管理运动和微件动画

    创建 MotionScene:在之前的 MotionLayout 示例中,app:layoutDescription 属性引用一个 MotionScene.MotionScene 是一个 XML 资源 ...

  8. php接入微信运动计步功能,运动计步,微信运动究竟靠不靠谱?

    很多朋友喜欢用微信运动,记录自己每天的运动步数,希望通过每天运动计步,达到减肥健身的效果.那么,微信运动到底靠谱吗 ? 能起到锻炼的效果吗 ? 在搞清这个问题之前,我们需要熟悉几个概念. 1.微信计步 ...

  9. python做运动控制_第一课:用Python操控小龟小车运动

    欢迎来到小龟的课堂,今天我们讲如何用小龟小车的车载Python控制小车运动. 如果小伙伴还不会使用小龟小车的Python编辑器的话,可以阅读这篇教程<如何使用小龟小车的Python编辑器> ...

  10. 获取this_小程序获取微信运动步数并集成echarts报表显示

    需求 现在运动计步非常的火,大家常用的计步工具一般有keep.咕咚.微信运动和其他移动设备等,本文是基于微信小程序获取用户的微信运动数据并可视化呈现出来. 先看一下最终实现效果: 微信运动规则 在开发 ...

最新文章

  1. java implements interface_Java 接口 interface implements
  2. mysql 5.6 安装教程
  3. 《数据库SQL实战》查找最晚入职员工的所有信息
  4. 查找发布地图的 REST URL并查询相关信息
  5. json 插入数据_Power BI数据回写SQL Server(2)——存储过程一步到位
  6. How to deploy Odoo 11 on Ubuntu 18.04
  7. 10款精美的web前端源码的特效
  8. Kotlinx.serialization VS Gson
  9. 第1章 Spring Boot史前简述
  10. key位置 win10生成的ssh_WIN 10生成SSH密钥教程
  11. Pycharm导入同级目录模块解决办法汇总
  12. 大学计算机专业实习报告
  13. xp如何配置信息服务器地址,xp如何配置信息服务器地址
  14. 为什么cfg文件打开是乱码
  15. win10下kafka集群安装+集成springboot
  16. linux系统巡检程序,Linux系统巡检项目
  17. spring-batch参数传递
  18. LogUtil日志打印工具
  19. 电脑显示设备遇到问题需要重启(蓝屏)
  20. WPF更改圆形头像设置

热门文章

  1. KingbaseES数据库Windows环境下注册数据库服务
  2. 3D楼层导视—楼层导航—楼层定位解决方案
  3. git 设置 user.name
  4. 【免费报名】厦门站:企业信息化建设和安全管理
  5. STM32F4时钟触发ADC双通道采样DMA传输进行FFT+测频率+采样频率可变+显示波形(详细解读)
  6. R语言入门(21)-数据框的数据处理以及数学计算
  7. 【构建工具】Maven 教程
  8. vue-列表的展开与折叠
  9. 通俗解读随机森林Random Forest
  10. Hadoop学习之旅三:MapReduce