В этом уроке: https://www.khanacademy.org/computing/computer-programming/programming-games-visualizations/programming-3d-shapes/a/rotating-3d-shapes показано, как создавать 3d-фигуры и вращать их. Я следовал шаги, воссоздающий все в JavaScript вместо Processing.js, но не может по каким-то причинам сделать эти функции (в JavaScript):Как я могу сделать эти функции processing.js в javascript?
var rotateY3D = function(theta) {
var sinTheta = sin(theta);
var cosTheta = cos(theta);
for (var n = 0; n < nodes.length; n++) {
var node = nodes[n];
var x = node[0];
var z = node[2];
node[0] = x * cosTheta - z * sinTheta;
node[2] = z * cosTheta + x * sinTheta;
}
};
Это была моя попытка:
var rotateZ3D = function (theta) {
var sinTheta = Math.sin(theta);
var cosTheta = Math.cos(theta);
for (var n = 0; n<nodes.length; n++) {
var x = nodes[n][0];
var y = nodes[n][1];
nodes[n][0] = x * cosTheta - y * sinTheta;
nodes[n][1] = y * cosTheta + x * sinTheta;
}
}
Мог бы кто-нибудь сказать мне, что я делаю неправильно, или если мне нужно пойти по этому поводу по-другому?
выглядит как хан-академия использует '' sin' и реализации cos' что получайте градусы как параметры, «Math.sin» и «Math.cos» получают радианы. Угадайте, что вы получаете какие-то нелепые результаты =) – Prusse
Ох, это параметр тета, который всегда меняется, когда я перетаскиваю мышью? – Axeowny
'mouseDragged = function() {rotateY3D (mouseX - pmouseX); rotateX3D (mouseY - pmouseY); }; это «размер» движения мыши. Также обратите внимание, что исходное значение изменено и потеряно. – Prusse