В программе «Обработка» мне нужно сделать так, чтобы куб двигался в том месте, где куб перемещается при нажатии строчной буквы x для против часовой стрелки оси x или нажатии заглавной буквы X для часовой стрелки оси x и нажатии строчной буквы y для против часовой стрелки y оси, или нажмите заглавную Y для часовой стрелки по оси y, и нажмите строчную букву z для против часовой стрелки оси z, и нажмите заглавную Z для часовой стрелки для оси z. Проблема в том, что куб перемещается не на своем месте, но вращается. Как мне вращаться, но не двигаться с места? Пожалуйста, помогите проверить этот код. Код работает, однако он перемещается не к месту. Кроме того, он вращается при первом нажатии кнопки. Как мне это исправить?
float theta = 0;
void setup() {
size(600, 600, P3D);
}
void draw() {
background(255);
fill(127, 127);
String s1 = "Press x for counterclockwise of x axis, X for clockwise of x axis";
String s2 = "Press y for counterclockwise of y axis, Y for clockwise of y axis ";
String s3 = "Press z for counterclockwise of z axis, Z for for clockwise for z axis";
text(s1, 0, width/2 + 100);
text(s2, 0, width/2 + 125);
text(s3, 0, width/2 + 150);
// if(pressLowX() == true)
// cubeBox(.5, .5, .5);
pressButtons();
pushMatrix();
translate(width/2, height/2);
cubeBox(.5, .5, .5);
popMatrix();
}
void cubeBox(float x, float y, float z) {
translate(x, y, z);
rotate(theta);
beginShape(QUADS);
fill(255, 0, 0);
vertex(100, 100, 100);
vertex(-100, 100, 100);
vertex(-100, -100, 100);
vertex(100, -100, 100);
fill(255, 255, 0);
vertex(-100, -100, -100);
vertex(100, -100, -100);
vertex(100, 100, -100);
vertex(-100, 100, -100);
fill(0, 255, 0);
vertex(100, 100, 100);
vertex(100, -100, 100);
vertex(100, -100, -100);
vertex(100, 100, -100);
fill(0, 255, 255);
vertex(-100, -100, 100);
vertex(-100, -100, -100);
vertex(-100, 100, -100);
vertex(-100, 100, 100);
fill(0, 0, 255);
vertex(-100, -100, 100);
vertex(-100, -100, -100);
vertex(100, -100, -100);
vertex(100, -100, 100);
fill(255, 0, 255);
vertex(100, 100, 100);
vertex(-100, 100, 100);
vertex(-100, 100, -100);
vertex(100, 100, -100);
// rotate(-theta);
// translate(-x, -y, -z);
endShape(CLOSE);
}
void pressButtons() {
if (key == 'x') {
theta = theta - .05;
rotateX(radians(0));
} else if (key == 'X') {
theta = theta + .05;
rotateX(radians(0));
} else if (key == 'y') {
theta = theta - .05;
rotateY(radians(90));
} else if (key == 'Y') {
theta = theta + .05;
rotateY(radians(90));
} else if (key == 'z') {
theta = theta - .05;
rotateZ(radians(60));
} else if (key == 'Z') {
theta = theta + .05;
rotateZ(radians(60));
}
}