我正在使用这两个函数来旋转我的 three.js 场景中的对象
// Rotate an object around an arbitrary axis in object space
function rotateAroundObjectAxis(object, axis, radians) {
rotationMatrix = new THREE.Matrix4();
rotationMatrix.makeRotationAxis(axis.normalize(), radians);
object.matrix.multiplySelf(rotationMatrix); // post-multiply
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
delete rotationMatrix;
}
// Rotate an object around an arbitrary axis in world space
function rotateAroundWorldAxis(object, axis, radians) {
rotationMatrix = new THREE.Matrix4();
rotationMatrix.makeRotationAxis(axis.normalize(), radians);
rotationMatrix.multiplySelf(object.matrix); // pre-multiply
object.matrix = rotationMatrix;
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
delete rotationMatrix;
}
其中rotationMatrix 是一个全局变量。我对 Javascript 和 Web 应用程序开发没有经验,但我与一个似乎向我传达的人交谈,因为有时我会在一个框架中调用这些函数一次,我应该担心它每次调用都会创建新对象这一事实。到目前为止,这还没有给我带来问题,但是我是否应该担心垃圾收集器最终无法跟上?我知道这里的 delete 关键字与 C++ 不同,只会删除引用。当我在每个函数的末尾调用它时,这有帮助吗?除了让这个功能更高效之外,我还能做些什么吗?这样它就可以被尽可能多地调用,而不会减慢速度或最终使浏览器占用太多内存。