基于map函数生成星战片头动画
基于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函数生成星战片头动画相关推荐
- 北美电影票房Top10-2019年12月20日:《星战9》1.77亿不及预期
文/Leon 本文为原创,转载请注明出处 随着圣诞节的来临,北美影市也越发的热闹,本周又迎来仨新面孔,其中<星战9>壕无悬念一枝独秀,而另两部新片<猫>和<性感炸弹&g ...
- 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上) #华为云·寻找黑马程序员#
[摘要] 用three.js实现简易的漫威片头动画 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 大作业说明 通读完上一篇博文中提及的教程,觉得 ...
- 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上)
我的github主页:https://github.com/dashnowords 我的新书上架啦,3天即登京东计算机编程语言类排行榜Top1!!!精选30+JavaScript库,从使用方式,设计原 ...
- 白兵机器人怎样连接_“玩具之家”的新宠——星战白兵冲锋队员机器人体验
原标题:"玩具之家"的新宠--星战白兵冲锋队员机器人体验 前言 前一段时间刚刚陪家里那位刷完上映不久的星战系列续作星球大战8:最后的绝地武士,虽然我算不上星战迷,但还是陪着老公一起 ...
- python十角星_使用 Python 绘制《星战》词云
作者介绍 Rafael Schultze-Kraft "前神经科学家,数据挖掘及机器学习的狂热爱好者,Python 的狂热粉丝" 使用 Python 绘制<星战>词云 ...
- html5 loader,7种基于GSAP的SVG Loader加载动画特效
这是一组效果非常炫酷的基于GSAP的SVG Loader加载动画特效.这组SVG加载动画特效共有7种效果,分别使用GSAP对SVG进行操纵,制作出各种炫酷的Loading加载动画效果. 这些SVG加载 ...
- 星战前夜服务器维护时间,EVE星战前夜开测时间在什么时候 什么时候测试
EVE星战前夜什么时候开测,EVE星战前夜的测试时间在什么时候,想要知道EVE星战前夜测试时间的小伙伴一起来看看EVE星战前夜的相关资讯,了解一下游戏的开测时间吧. EVE星战前夜目前仍在开发阶段,目 ...
- 星战7将映 追忆那些年存储你身边大数据
据悉<星球大战7>将于1月9日在大陆各地全面上映,作为星球大战迷的朋友一定非常期待新片<星球大战:原力觉醒>的上映,从国外.香港等上映地区看,票房均遥遥领先.据统计,<星 ...
- 【带着canvas去流浪(13)】用Three.js制作简易的MARVEL片头动画(下)#华为云·寻找黑马程序员#
[摘要] three.js实现的Web 3D字体模型动画 示例代码托管在:http://www.github.com/dashnowords/blogs 有了上一篇基础知识的储备,本节就来制作一下简易 ...
最新文章
- bzoj 2588 Spoj 10628. Count on a tree (可持久化线段树)
- 人间真实!如果我有这套装备,我也能码到凌晨...... | 每日趣闻
- 云数据未来面临的问题
- java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...
- curses颜色操作
- 40个精心设计的免费的社交网络图标
- 红象云腾发布新一代PB级高速大数据平台产品
- python 最优化算法库_哈工大硕士生用?Python 实现了 11 种经典数据降维算法,源代码库已开放...
- Kubernetes tutorial - K8S 官方入门教程 中文翻译
- vue仿微博评论回复_vue教程2-07 微博评论功能
- 维护机房服务器工作,机房维护(服务器搬迁方案).doc
- 不同超声诊断仪器的原理和FPGA在超声中应用
- 异常0x0000005
- IntelliJIDEA DEFAULT KEYMAP
- Python数据分析5-数据分组与聚合
- Spring Cloud Gateway(一)为什么用网关、能做什么、为什么选择Gateway、谓词工厂、过滤器配置
- 第十九周学习周报(20180709-20180715)
- 2021赤峰二中高考成绩查询,2021年赤峰高考状元名单公布,赤峰高考状元学校资料及最高分...
- anc降噪是什么意思
- java中unknown source,java - 对于 提示信息为 unknown source的解决办法: jdk 替换jre, 编译时加上debug=true...
热门文章
- python 自动补全函数括号_三分钟,让你弄清楚Python中函数的括号使用
- tinyint数据类型php筛选时怎么判断_PHP从入门到精通(三)PHP语言基础
- 服务器脱机状态,从脱机工作切换到联机工作
- hssfwork 导出excel 文件已损坏_C# NPOI 操作EXCEL文件的读取和导出
- java取负数_阿里巴巴 Java 开发手册之MySQL 规约
- 获取滑动条高度_HexMap学习笔记(三)——海拔高度与阶梯连接
- python第四章单元测试_MOOC选修课答案第四章单元测试答案_Sar编程基础期末答案...
- 雪碧图PHP,Css Sprite(雪碧图、精灵图) - SegmentFault 思否
- c+命名空间_了解C ++中的命名空间
- 斯威夫特山地车_斯威夫特枚举