注: これは Processing 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回転は上から下にタンブルし、マウスYが変化すると何度も何度も元に戻ります。必要なのは、マウスが動く限り一方向にタンブルし続けることですマウスが下に移動すると、上下に逆方向に移動します。誰でもこれを理解するのを手伝ってもらえますか?