xxxxxxxxxx
float theta = 0;
float radius = 400;
ArrayList<PVector> coordListTop = new ArrayList<PVector>();
ArrayList<PVector> coordListBottom = new ArrayList<PVector>();
float rotate = 0.0;
int Y = 640;
int twist = 30;
void setup(){
size(800,800, P3D);
background(0);
while(theta<360){
float x = radius * cos(radians(theta));
float z = radius * sin(radians(theta));
PVector coordTop = new PVector(x,-Y,z);
PVector coordBottom = new PVector(x,Y,z);
coordListTop.add(coordTop);
coordListBottom.add(coordBottom);
theta+=5;
}
}
void draw(){
background(0);
translate(400,400,0);
rotateY(rotate);
rotate+=0.005;
int size = coordListTop.size();
colorMode(HSB,size,1,1);
pushMatrix();
translate(200,0,200);
stroke(map(rotate%(2*PI),0,2*PI,0,size),1,1);
noFill();
sphere(100);
popMatrix();
for (int i=0; i<coordListTop.size();i++){
stroke(i,1,1);
line(coordListTop.get(i%size).x, coordListTop.get(i%size).y, coordListTop.get(i%size).z,
coordListBottom.get((i+twist)%size).x, coordListBottom.get((i+twist)%size).y, coordListBottom.get((i+twist)%size).z);
}
}