processing让圆在画面中移动
时间: 2024-03-15 20:44:06 浏览: 26
你可以使用Processing的`ellipse()`函数来绘制圆,并使用`setup()`和`draw()`函数来让圆在屏幕中移动。
以下是一个示例代码,在屏幕中移动一个圆:
```processing
int x = 50; // 圆的初始x坐标
int y = 50; // 圆的初始y坐标
int diameter = 50; // 圆的直径
int speed = 5; // 圆的移动速度
void setup() {
size(500, 500); // 创建一个500x500像素的画布
}
void draw() {
background(255); // 将背景设置为白色
ellipse(x, y, diameter, diameter); // 绘制圆
x += speed; // 将圆的x坐标增加移动速度
if (x > width - diameter/2 || x < diameter/2) { // 如果圆超出了屏幕的左右边缘
speed = -speed; // 将圆的移动方向反转
}
}
```
在这个例子中,我们在`setup()`函数中创建了一个500x500像素的画布。在`draw()`函数中,我们首先将背景设置为白色,然后使用`ellipse()`函数绘制一个圆。接着,我们将圆的x坐标增加移动速度,让圆在屏幕中移动。最后,我们使用一个if语句检查圆是否超出了屏幕的左右边缘,如果是,我们将圆的移动方向反转,让圆继续在屏幕中移动。
你可以根据你的需求修改圆的初始位置、直径、移动速度和代码。
相关问题
processing圆随着鼠标移动远离鼠标
在 Processing 中实现圆随着鼠标移动远离的效果,可以通过计算鼠标和圆之间的距离,来改变圆的位置。以下是一个简单的示例代码:
```
float circleX, circleY; // 圆的位置
float distanceThreshold = 100; // 距离阈值,超过该距离圆会移动
void setup() {
size(500, 500);
circleX = width/2;
circleY = height/2;
}
void draw() {
background(255);
float distance = dist(circleX, circleY, mouseX, mouseY); // 计算鼠标和圆之间的距离
if (distance > distanceThreshold) { // 如果距离超过阈值
float angle = atan2(mouseY - circleY, mouseX - circleX); // 计算鼠标和圆之间的角度
circleX += cos(angle); // 根据角度改变圆的位置
circleY += sin(angle);
}
fill(255, 0, 0);
ellipse(circleX, circleY, 50, 50); // 绘制圆
}
```
这段代码会绘制一个红色的圆,当鼠标和圆之间的距离超过 100 个像素时,圆会沿着鼠标和圆之间的方向移动,直到距离小于 100 个像素为止。你可以根据自己的需要调整距离阈值、圆的大小等参数,以获得不同的效果。
processing里让不同的圆跟着鼠标不同的移动
可以使用 Processing 的鼠标事件函数 `mouseMoved()`,然后在函数内部计算每个圆的距离和鼠标的距离,根据距离的差值来确定圆的移动方向和速度。以下是示例代码:
```java
int numCircles = 10;
float[] circleX = new float[numCircles];
float[] circleY = new float[numCircles];
float[] circleSpeedX = new float[numCircles];
float[] circleSpeedY = new float[numCircles];
float maxDistance = 50;
void setup() {
size(400, 400);
smooth();
noStroke();
for (int i = 0; i < numCircles; i++) {
circleX[i] = random(width);
circleY[i] = random(height);
circleSpeedX[i] = random(-2, 2);
circleSpeedY[i] = random(-2, 2);
}
}
void draw() {
background(255);
for (int i = 0; i < numCircles; i++) {
float distance = dist(circleX[i], circleY[i], mouseX, mouseY);
if (distance < maxDistance) {
float speed = map(distance, 0, maxDistance, 4, 0);
float angle = atan2(mouseY - circleY[i], mouseX - circleX[i]);
circleSpeedX[i] = speed * cos(angle);
circleSpeedY[i] = speed * sin(angle);
}
circleX[i] += circleSpeedX[i];
circleY[i] += circleSpeedY[i];
if (circleX[i] < 0 || circleX[i] > width) {
circleSpeedX[i] *= -1;
}
if (circleY[i] < 0 || circleY[i] > height) {
circleSpeedY[i] *= -1;
}
fill(255, 0, 0);
ellipse(circleX[i], circleY[i], 30, 30);
}
}
void mouseMoved() {
// do nothing
}
```
这个示例代码中会生成10个圆,每个圆会根据鼠标的位置来改变移动方向和速度,且不同的圆会对鼠标的位置有不同的响应。