围绕一个点旋转越来越近

时间:2013-07-03 09:32:14

标签: javascript math 3d

我正在创建一个将在画布中显示3D对象的Web应用程序。现在我遇到了这个问题:

我正在镜头周围慢慢旋转相机,以便从各个方向查看3D对象。为此,我使用此代码(JavaScript):

var step = 0.1*Math.PI/180;
scene.camera.position.x = Math.cos(step) * (scene.camera.position.x - 0) - Math.sin(step) * (scene.camera.position.z - 0) + 0;
scene.camera.position.z = Math.sin(step) * (scene.camera.position.x - 0) + Math.cos(step) * (scene.camera.position.z - 0) + 0;

那些零是场景的中心,我把它留在那里以防我们决定使用另一个基础来源。

此代码会使相机围绕点0,0旋转,但它会慢慢靠近它。以下是一些屏幕截图,向您展示它的作用:

Click for full view

没有其他参数会影响相机的位置。我不明白为什么会这样做以及问题可能是什么。

1 个答案:

答案 0 :(得分:2)

我找到了造成这个问题的原因:我改变了相机的X位置,然后用它的X位置的新值改变了相机的Z位置。因为这将是不同的,所以两个计算的原点不再相对相同。

这很容易解决,只需将它们存储到两个新变量然后分配它们

即可
var posx = Math.cos(step) * (scene.camera.position.x - 0) - Math.sin(step) * (scene.camera.position.z - 0) + 0;
var posz = Math.sin(step) * (scene.camera.position.x - 0) + Math.cos(step) * (scene.camera.position.z - 0) + 0;
scene.camera.position.x = posx;
scene.camera.position.z = posz;