processing十个运用三角函数的动画

时间: 2023-11-25 22:07:55 浏览: 32
以下是一个使用三角函数创建动画的 Processing 代码示例: ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算 x 和 y 的值 float x = cos(angle) * 100 + width/2; float y = sin(angle) * 100 + height/2; // 绘制圆形 ellipse(x, y, 50, 50); // 增加角度 angle += 0.1; } ``` 此代码将在屏幕中央绘制一个随时间变化的圆形。可以通过调整 `angle` 的增量来控制动画速度,也可以通过调整圆形的半径和位置来创建不同的动画效果。
相关问题

processing十个运用三角函数的动画案例

以下是十个使用三角函数创建动画的 Processing 代码示例: 1. 绘制旋转的正方形 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算正方形的四个顶点的位置 float x1 = cos(angle) * 100 + width/2; float y1 = sin(angle) * 100 + height/2; float x2 = cos(angle + PI/2) * 100 + width/2; float y2 = sin(angle + PI/2) * 100 + height/2; float x3 = cos(angle + PI) * 100 + width/2; float y3 = sin(angle + PI) * 100 + height/2; float x4 = cos(angle + 3*PI/2) * 100 + width/2; float y4 = sin(angle + 3*PI/2) * 100 + height/2; // 绘制正方形 quad(x1, y1, x2, y2, x3, y3, x4, y4); // 增加角度 angle += 0.05; } ``` 2. 绘制螺旋线 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算螺旋线的坐标 float x = cos(angle) * angle * 2 + width/2; float y = sin(angle) * angle * 2 + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 3. 绘制心形线 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算心形线的坐标 float x = 16 * pow(sin(angle), 3); float y = -13 * cos(angle) + 5 * cos(2 * angle) + 2 * cos(3 * angle) + cos(4 * angle); x = x * 20 + width/2; y = y * 20 + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 4. 绘制星形 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算星形的坐标 float x1 = cos(angle) * 100 + width/2; float y1 = sin(angle) * 100 + height/2; float x2 = cos(angle + 2*PI/5) * 100 + width/2; float y2 = sin(angle + 2*PI/5) * 100 + height/2; float x3 = cos(angle + 4*PI/5) * 100 + width/2; float y3 = sin(angle + 4*PI/5) * 100 + height/2; float x4 = cos(angle + 6*PI/5) * 100 + width/2; float y4 = sin(angle + 6*PI/5) * 100 + height/2; float x5 = cos(angle + 8*PI/5) * 100 + width/2; float y5 = sin(angle + 8*PI/5) * 100 + height/2; // 绘制星形 beginShape(); vertex(x1, y1); vertex(x3, y3); vertex(x5, y5); vertex(x2, y2); vertex(x4, y4); endShape(CLOSE); // 增加角度 angle += 0.05; } ``` 5. 绘制圆形波浪线 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算圆形波浪线的坐标 float x = cos(angle) * (50 + 10 * sin(angle)) + width/2; float y = sin(angle) * (50 + 10 * sin(angle)) + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 6. 绘制蝴蝶线 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算蝴蝶线的坐标 float x = sin(angle) * (exp(cos(angle)) - 2*cos(4*angle) - pow(sin(angle/12), 5)) * 80 + width/2; float y = cos(angle) * (exp(cos(angle)) - 2*cos(4*angle) - pow(sin(angle/12), 5)) * 80 + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 7. 绘制花瓣形状 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算花瓣形状的坐标 float x = sin(angle) * (5 * cos(angle/4) + 5) + width/2; float y = cos(angle) * (5 * cos(angle/4) + 5) + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 8. 绘制螺线 ```java float angle = 0; float radius = 10; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算螺线的坐标 float x = cos(angle) * radius + width/2; float y = sin(angle) * radius + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度和半径 angle += 0.1; radius += 0.05; } ``` 9. 绘制摆线 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算摆线的坐标 float x = sin(angle) * 100; float y = cos(angle) * 100 + sin(angle) * 50; x = x + width/2; y = y + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 10. 绘制正弦曲线 ```java float angle = 0; void setup() { size(400, 400); smooth(); } void draw() { background(255); // 计算正弦曲线的坐标 float x = angle; float y = sin(angle) * 100 + height/2; // 绘制圆形 ellipse(x, y, 5, 5); // 增加角度 angle += 0.05; } ``` 以上是十个使用三角函数创建动画的 Processing 代码示例,你可以将其复制到 Processing 编辑器中运行并观察效果。

processing15个运用三角函数的动画案例代码

以下是15个使用三角函数创建动画的案例代码: 1. 摆钟动画 ``` float angle = 0; float amplitude = 100; float period = 2000; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); line(0, 0, amplitude*sin(angle), amplitude*cos(angle)); ellipse(amplitude*sin(angle), amplitude*cos(angle), 20, 20); angle += TWO_PI/period; } ``` 2. 螺旋动画 ``` float angle = 0; float radius = 50; float speed = 0.1; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); line(0, 0, radius*sin(angle), radius*cos(angle)); ellipse(radius*sin(angle), radius*cos(angle), 20, 20); angle += speed; radius += 0.1; } ``` 3. 圆周运动动画 ``` float angle = 0; float radius = 100; float speed = 0.05; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); line(0, 0, radius*sin(angle), radius*cos(angle)); ellipse(radius*sin(angle), radius*cos(angle), 20, 20); angle += speed; } ``` 4. 曲线动画 ``` float angle = 0; float amplitude = 100; float period = 2000; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); for (int x = -width/2; x < width/2; x++) { float y = amplitude*sin(angle + TWO_PI*x/period); point(x, y); } angle += TWO_PI/period; } ``` 5. 蛇形动画 ``` float angle = 0; float amplitude = 50; float period = 200; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); float x = 0; float y = 0; for (int i = 0; i < 10; i++) { x += amplitude*sin(angle + TWO_PI*i/10); y += amplitude*cos(angle + TWO_PI*i/10); line(x, y, x + amplitude*sin(angle + TWO_PI*(i+1)/10), y + amplitude*cos(angle + TWO_PI*(i+1)/10)); } angle += TWO_PI/period; } ``` 6. 波浪动画 ``` float angle = 0; float amplitude = 50; float period = 200; float wavelength = 200; void setup() { size(400, 400); } void draw() { background(255); translate(0, height/2); strokeWeight(2); stroke(0); for (int x = 0; x < width; x++) { float y = amplitude*sin(angle + TWO_PI*x/wavelength); point(x, y); } angle += TWO_PI/period; } ``` 7. 贝塞尔曲线动画 ``` float angle = 0; float amplitude = 50; float period = 200; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); noFill(); beginShape(); for (int i = 0; i < 10; i++) { float x = amplitude*sin(angle + TWO_PI*i/10); float y = amplitude*cos(angle + TWO_PI*i/10); curveVertex(x, y); } endShape(); angle += TWO_PI/period; } ``` 8. 球面运动动画 ``` float angle = 0; float radius = 100; float speed = 0.05; void setup() { size(400, 400, P3D); } void draw() { background(255); translate(width/2, height/2, 0); strokeWeight(2); stroke(0); float x = radius*sin(angle); float y = radius*cos(angle); float z = radius*sin(angle); sphere(20); translate(x, y, z); sphere(10); angle += speed; } ``` 9. 半径变化动画 ``` float angle = 0; float radius = 50; float speed = 0.1; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); line(0, 0, radius*sin(angle), radius*cos(angle)); ellipse(radius*sin(angle), radius*cos(angle), 20, 20); angle += speed; radius += sin(angle)*5; } ``` 10. 色彩变化动画 ``` float angle = 0; float amplitude = 100; float period = 2000; void setup() { size(400, 400); } void draw() { colorMode(HSB, 360, 100, 100); background(angle%360, 50, 100); translate(width/2, height/2); strokeWeight(2); stroke((angle+180)%360, 50, 100); for (int x = -width/2; x < width/2; x++) { float y = amplitude*sin(angle + TWO_PI*x/period); point(x, y); } angle += TWO_PI/period; } ``` 11. 文字动画 ``` float angle = 0; float amplitude = 50; float period = 2000; String message = "Hello, world!"; int fontSize = 50; void setup() { size(400, 400); textSize(fontSize); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); for (int i = 0; i < message.length(); i++) { float x = i*fontSize; float y = amplitude*sin(angle + TWO_PI*i/period); text(message.charAt(i), x, y); } angle += TWO_PI/period; } ``` 12. 图形旋转动画 ``` float angle = 0; float amplitude = 50; float period = 2000; int sides = 5; float offset = PI/2; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); beginShape(); for (int i = 0; i < sides; i++) { float x = amplitude*sin(angle + TWO_PI*i/sides + offset); float y = amplitude*cos(angle + TWO_PI*i/sides + offset); vertex(x, y); } endShape(CLOSE); angle += TWO_PI/period; } ``` 13. 网格动画 ``` float angle = 0; float amplitude = 50; float period = 200; void setup() { size(400, 400); } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); for (int x = -width/2; x < width/2; x += 20) { for (int y = -height/2; y < height/2; y += 20) { float d = dist(0, 0, x, y); float a = atan2(y, x) + angle; float r = amplitude*sin(a + TWO_PI*d/period); point(x + r*cos(a), y + r*sin(a)); } } angle += TWO_PI/period; } ``` 14. 三维旋转动画 ``` float angleX = 0; float angleY = 0; float angleZ = 0; void setup() { size(400, 400, P3D); } void draw() { background(255); translate(width/2, height/2, 0); rotateX(angleX); rotateY(angleY); rotateZ(angleZ); box(50); angleX += 0.05; angleY += 0.05; angleZ += 0.05; } ``` 15. 粒子运动动画 ``` float angle = 0; float amplitude = 50; float period = 200; int numParticles = 100; Particle[] particles = new Particle[numParticles]; void setup() { size(400, 400); for (int i = 0; i < numParticles; i++) { particles[i] = new Particle(random(width), random(height)); } } void draw() { background(255); translate(width/2, height/2); strokeWeight(2); stroke(0); for (int i = 0; i < numParticles; i++) { particles[i].update(); particles[i].display(); } angle += TWO_PI/period; } class Particle { float x; float y; float r; Particle(float x, float y) { this.x = x; this.y = y; this.r = random(5, 20); } void update() { float a = atan2(y-height/2, x-width/2) + angle; float d = dist(x, y, width/2, height/2); float r = amplitude*sin(a + TWO_PI*d/period); x = width/2 + r*cos(a); y = height/2 + r*sin(a); } void display() { ellipse(x, y, r, r); } } ```

相关推荐

最新推荐

recommend-type

Kinect和Processing入门

源自交互工程师Daniel Shiffman的汉译文档,内容详实,使用方便,既有原理介绍,又有具体的代码使用指南。
recommend-type

单片机C语言Proteus仿真实例可演奏的电子琴

单片机C语言Proteus仿真实例可演奏的电子琴提取方式是百度网盘分享地址
recommend-type

电力概预算软件.zip

电力概预算软件
recommend-type

setuptools-64.0.0.tar.gz

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

爱你老妈(HTML文件)母亲节快乐

母亲节祝福html源码 很简单的代码,随机生成背景
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用matlab绘制高斯色噪声情况下的频率估计CRLB,其中w(n)是零均值高斯色噪声,w(n)=0.8*w(n-1)+e(n),e(n)服从零均值方差为se的高斯分布

以下是用matlab绘制高斯色噪声情况下频率估计CRLB的代码: ```matlab % 参数设置 N = 100; % 信号长度 se = 0.5; % 噪声方差 w = zeros(N,1); % 高斯色噪声 w(1) = randn(1)*sqrt(se); for n = 2:N w(n) = 0.8*w(n-1) + randn(1)*sqrt(se); end % 计算频率估计CRLB fs = 1; % 采样频率 df = 0.01; % 频率分辨率 f = 0:df:fs/2; % 频率范围 M = length(f); CRLB = zeros(M,1); for
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。