我想了解当我们围绕任意点旋转 Vector 时会发生什么。如果 p.x 为 0,则角度将为 90,我理解这一点,但我无法想象为什么当我使用 p.x = 50 时它是 45。
var v = new THREE.Vector2(100,0);
var p = new THREE.Vector2(50,0);
v.rotateAround(p, 90 * Math.PI/180);
console.log('Angle: ', v.angle() * 180/Math.PI);
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r82/three.min.js">
</script>
最佳答案
您正在围绕点 p
旋转点 v
。这是通过围绕原点旋转矢量 v-p
并将生成的矢量(读取点平移)添加回 p
来完成的。
作为 v-p=(50,0)
90° 旋转得到 (0,50)
并加回 p
得到点 (50,50)
相对于原点成 45° 角,但仍从 p
垂直向上。
| v after rotation
| o
| .
| .
| .
| .
--o---------+---------o-----
origin p v at start
https://stackoverflow.com/questions/40546449/