我试图了解当我们围绕任意点旋转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>
答案 0 :(得分:3)
您正在点v
周围转动p
点。这是通过在原点周围旋转矢量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