ПРИМЕЧАНИЕ: это в IDE обработки
Я пытаюсь получить сферическую орбиту, и я почти получил ее. это то, что я имею до сих пор:
float cameraTheta, cameraPhi, cameraRadius; //camera position in spherical coordinates
float camx, camy, camz;
void setup() {
size(500, 500, P3D);
background(255);
cameraRadius = 200.0f;
cameraTheta = 2.80;
cameraPhi = 2.0;
recomputeOrientation();
}
void draw() {
background(255);
lights();
mouseMotion();
camera(camx, camy, camz, 0, 0, 0, 0, -1, 0);
sphereDetail(10);
sphere(25);
}
void mouseMotion()
{
if (mousePressed) {
cameraTheta += (mouseX - pmouseX)*0.05;
cameraPhi += (mouseY - pmouseY)*0.05;
}
recomputeOrientation(); //update camera (x,y,z) based on (radius,theta,phi)
}
void recomputeOrientation()
{
camx = cameraRadius * sin(cameraTheta)*sin(cameraPhi);
camz = cameraRadius * -cos(cameraTheta)*sin(cameraPhi);
camy = cameraRadius * -cos(cameraPhi);
redraw();
}
вращение x прекрасно работает, однако вращение y вращается сверху вниз, а затем снова и снова поднимается назад при изменении мыши, мне нужно, чтобы оно продолжало вращаться в одном направлении до тех пор, пока мышь перемещается вверх и назад в другом направлении, когда мышь перемещается вниз. Может кто-нибудь помочь мне разобраться в этом?