基于map函数生成星战片头动画

@(Processing学习日记)

–代码来自Daniel Shiffman

前面讲过生成动画的基本原理,核心在于定义物体的移动控制。

这个案例中,主要牵涉到的知识点有:

  • translate(x,y)函数
  • map(value,start,end,low,upper)函数

translate(x,y)

坐标原点移动到指定(x,y)点。

这个函数是一种方便用法,如果不用这个函数也能实现所有的移动位置计算,但是会稍微复杂一些。在计算一些数学问题时,我们知道适当的考虑将坐标系移动,将会简化问题。比如,以原点为圆心位置的圆,和任意位置的圆的计算问题,显然是以坐标原点为圆心的圆会更好计算。

map函数

一般map函数有5个参数。这个函数的意思很明显是要做一个值的范围映射

第一个参数是要映射的值。
第二个和第三个参数是该值上下限
第四个第五个参数是该值映射后上下限

一般场景是,我们需要计算出一个比例,然后映射到屏幕上的像素位置。

Star类

// Star.pde
class Star
{float x,y,z;float pz;Star(){x = random(-width,width);y = random(-height,height);z = random(0,width);pz = z; }void update(){z = z - speed;if(z < 1){z = width;x = random(-width,width);y = random(-height,height);pz = z;}}void show(){fill(255);noStroke();float sx = map(x / z, 0, 1, 0, width);float sy = map(y / z, 0, 1, 0, height);//float r = map(z,0, width,16,0);//ellipse(sx,sy,r,r);float px = map(x / pz, 0, 1, 0, width);float py = map(y / pz, 0, 1, 0, height);stroke(255);line(px,py,sx,sy);pz = z;}
}

入口调用

// StarField.pde
// 实例化对象
Star[] stars = new Star[10000];
float speed; // 鼠标移动速度
void setup()
{size(800,600);for(int i = 0; i < stars.length; i++){ stars[i] = new Star();}
}void draw()
{speed = map(mouseX,0,width,0,50);background(0);translate(width / 2, height / 2);for(int i = 0; i < stars.length; i++){stars[i].update();stars[i].show();}
}

具体运行效果可以自己运行查看。

首先还是需要定义一个Star类作为对象模板,在StarField中来生成对象,并在draw()函数中调用对象的方法,来控制显示和动画生成。

这个例子的逻辑很直接,在对象身上的Show函数绘制line或者ellipse,其中绘制圆形被注释了,可以自己取消看运行效果。

更多Processing相关学习,可以关注微信公众号

基于map函数生成星战片头动画相关推荐

  1. 北美电影票房Top10-2019年12月20日:《星战9》1.77亿不及预期

    文/Leon  本文为原创,转载请注明出处 随着圣诞节的来临,北美影市也越发的热闹,本周又迎来仨新面孔,其中<星战9>壕无悬念一枝独秀,而另两部新片<猫>和<性感炸弹&g ...

  2. 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上) #华为云·寻找黑马程序员#

    [摘要] 用three.js实现简易的漫威片头动画 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 大作业说明 通读完上一篇博文中提及的教程,觉得 ...

  3. 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上)

    我的github主页:https://github.com/dashnowords 我的新书上架啦,3天即登京东计算机编程语言类排行榜Top1!!!精选30+JavaScript库,从使用方式,设计原 ...

  4. 白兵机器人怎样连接_“玩具之家”的新宠——星战白兵冲锋队员机器人体验

    原标题:"玩具之家"的新宠--星战白兵冲锋队员机器人体验 前言 前一段时间刚刚陪家里那位刷完上映不久的星战系列续作星球大战8:最后的绝地武士,虽然我算不上星战迷,但还是陪着老公一起 ...

  5. python十角星_使用 Python 绘制《星战》词云

    作者介绍 Rafael Schultze-Kraft "前神经科学家,数据挖掘及机器学习的狂热爱好者,Python 的狂热粉丝" 使用 Python 绘制<星战>词云 ...

  6. html5 loader,7种基于GSAP的SVG Loader加载动画特效

    这是一组效果非常炫酷的基于GSAP的SVG Loader加载动画特效.这组SVG加载动画特效共有7种效果,分别使用GSAP对SVG进行操纵,制作出各种炫酷的Loading加载动画效果. 这些SVG加载 ...

  7. 星战前夜服务器维护时间,EVE星战前夜开测时间在什么时候 什么时候测试

    EVE星战前夜什么时候开测,EVE星战前夜的测试时间在什么时候,想要知道EVE星战前夜测试时间的小伙伴一起来看看EVE星战前夜的相关资讯,了解一下游戏的开测时间吧. EVE星战前夜目前仍在开发阶段,目 ...

  8. 星战7将映 追忆那些年存储你身边大数据

    据悉<星球大战7>将于1月9日在大陆各地全面上映,作为星球大战迷的朋友一定非常期待新片<星球大战:原力觉醒>的上映,从国外.香港等上映地区看,票房均遥遥领先.据统计,<星 ...

  9. 【带着canvas去流浪(13)】用Three.js制作简易的MARVEL片头动画(下)#华为云·寻找黑马程序员#

    [摘要] three.js实现的Web 3D字体模型动画 示例代码托管在:http://www.github.com/dashnowords/blogs 有了上一篇基础知识的储备,本节就来制作一下简易 ...

最新文章

  1. bzoj 2588 Spoj 10628. Count on a tree (可持久化线段树)
  2. 人间真实!如果我有这套装备,我也能码到凌晨...... | 每日趣闻
  3. 云数据未来面临的问题
  4. java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...
  5. curses颜色操作
  6. 40个精心设计的免费的社交网络图标
  7. 红象云腾发布新一代PB级高速大数据平台产品
  8. python 最优化算法库_哈工大硕士生用?Python 实现了 11 种经典数据降维算法,源代码库已开放...
  9. Kubernetes tutorial - K8S 官方入门教程 中文翻译
  10. vue仿微博评论回复_vue教程2-07 微博评论功能
  11. 维护机房服务器工作,机房维护(服务器搬迁方案).doc
  12. 不同超声诊断仪器的原理和FPGA在超声中应用
  13. 异常0x0000005
  14. IntelliJIDEA DEFAULT KEYMAP
  15. Python数据分析5-数据分组与聚合
  16. Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
  17. 第十九周学习周报(20180709-20180715)
  18. 2021赤峰二中高考成绩查询,2021年赤峰高考状元名单公布,赤峰高考状元学校资料及最高分...
  19. anc降噪是什么意思
  20. java中unknown source,java - 对于 提示信息为 unknown source的解决办法: jdk 替换jre, 编译时加上debug=true...

热门文章

  1. python 自动补全函数括号_三分钟,让你弄清楚Python中函数的括号使用
  2. tinyint数据类型php筛选时怎么判断_PHP从入门到精通(三)PHP语言基础
  3. 服务器脱机状态,从脱机工作切换到联机工作
  4. hssfwork 导出excel 文件已损坏_C# NPOI 操作EXCEL文件的读取和导出
  5. java取负数_阿里巴巴 Java 开发手册之MySQL 规约
  6. 获取滑动条高度_HexMap学习笔记(三)——海拔高度与阶梯连接
  7. python第四章单元测试_MOOC选修课答案第四章单元测试答案_Sar编程基础期末答案...
  8. 雪碧图PHP,Css Sprite(雪碧图、精灵图) - SegmentFault 思否
  9. c+命名空间_了解C ++中的命名空间
  10. 斯威夫特山地车_斯威夫特枚举