围绕点旋转Vector2

时间:2016-11-11 10:53:34

标签: math vector three.js geometry

我试图了解当我们围绕任意点旋转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>

1 个答案:

答案 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