请用Processing语言写一个不规则立体3D融球,它位于在画布中央,它的颜色以紫蓝色为主,赛博朋克风格,它可以随鼠标移动方向以轴对称的方式旋转。
时间: 2024-05-14 07:19:48 浏览: 96
以下是使用Processing语言实现的不规则立体3D融球的代码,可以通过鼠标移动方向以轴对称的方式旋转:
```java
float angleX = 0;
float angleY = 0;
float angleZ = 0;
float radius = 200;
int total = 100;
void setup() {
size(600, 600, P3D);
colorMode(HSB, 360, 100, 100);
stroke(255);
strokeWeight(1);
noFill();
}
void draw() {
background(0);
lights();
translate(width/2, height/2, 0);
rotateX(angleX);
rotateY(angleY);
rotateZ(angleZ);
for (int i = 0; i < total; i++) {
float r = radius + random(-50, 50);
float x = r * cos(TWO_PI/total*i);
float y = r * sin(TWO_PI/total*i);
float z = random(-100, 100);
stroke((i*10)%360, 80, 100);
point(x, y, z);
}
beginShape(TRIANGLE_STRIP);
for (int i = 0; i < total; i++) {
float r1 = radius + random(-50, 50);
float x1 = r1 * cos(TWO_PI/total*i);
float y1 = r1 * sin(TWO_PI/total*i);
float z1 = random(-100, 100);
stroke((i*10)%360, 80, 100);
vertex(x1, y1, z1);
float r2 = radius + random(-50, 50);
float x2 = r2 * cos(TWO_PI/total*(i+1));
float y2 = r2 * sin(TWO_PI/total*(i+1));
float z2 = random(-100, 100);
stroke((i*10)%360, 80, 100);
vertex(x2, y2, z2);
}
endShape();
angleX += (mouseY-pmouseY) * 0.01;
angleY += (mouseX-pmouseX) * 0.01;
angleZ += 0.01;
}
```
在代码中,我们使用了Processing内置的P3D渲染模式来实现立体效果。首先定义了球的半径、球面上的粒子数量等参数,然后在setup函数中设置了画布的大小、色彩模式、线条粗细等参数。在draw函数中,我们使用了translate和rotate函数来实现球体的旋转效果,然后使用for循环产生随机的球面上的粒子,并使用点线模式绘制出来。最后使用beginShape、vertex和endShape函数绘制球体的表面。
最后,我们根据鼠标的移动方向来改变球体的旋转角度,实现了轴对称的旋转效果。
阅读全文