无法更改 Khan processing.js (pjs) 代码本身的模式。因此,正如 Ravi Sharma 在他的回答中所写的那样,您必须转换这些值。
因为我不想这样做,所以使用 Khan 原始程序在正常的 processing.js / web 环境中运行,这就是我所做的:
(那不仅是把度数转换成弧度,还有鼠标和键盘输入)
var canvas = document.getElementById("canvas");
var processing = new Processing(canvas, function(processing) {
processing.size(400, 400);
processing.background(0,0,0,0);
processing.sbShow = false;
var mouseIsPressed = false;
$(".container").on("mousedown touchstart", function(e) {
mouseIsPressed = true;
processing.mouseX = e.pageX;
processing.mouseY = e.pageY;
processing.sbShow = false;
}).on("mouseup touchend", function(e) {
mouseIsPressed = false;
processing.mouseX = e.pageX;
processing.mouseY = e.pageY;
}).on("mousemove touchmove", function(e) {
processing.mouseX = e.pageX;
processing.mouseY = e.pageY;
});
processing.mousePressed = function () { mouseIsPressed = true; };
processing.mouseReleased = function () { mouseIsPressed = false; };
var keyIsPressed = false;
processing.keyPressed = function () { keyIsPressed = true; };
processing.keyReleased = function () { keyIsPressed = false; };
function getSound(s) {
var url = "sounds/" + s + ".mp3";
return new Audio(url);
}
function playSound(s) {
s.play();
}
function getImage(s) {
var url = "img/" + s + ".png";
//processing.externals.sketch.imageCache.add(url);
return processing.loadImage(url);
}
var rotateFn = processing.rotate;
processing.rotate = function(angle) {
rotateFn(processing.radians(angle));
}
var cosFn = processing.cos;
processing.cos = function(angle) {
return cosFn(processing.radians(angle));
}
var sinFn = processing.sin;
processing.sin = function(angle) {
return sinFn(processing.radians(angle));
}
with (processing) {
///////////////////////////////////////////////////////////////////////////////////////////////////
// Insert original Khan academy pjs code (default is degrees) ...
/////////////////////////////////////////////////////////////////////////////////////////////
};
if (typeof draw !== 'undefined') processing.draw = draw;
});
注意:这并不完整。tan、atan、atan2 等缺少转换。