processing十个运用三角函数的动画
时间: 2023-11-25 16:07:55 浏览: 149
以下是一个使用三角函数创建动画的 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);
}
}
```
阅读全文