【问题标题】:Rotating a Vector2 around a point围绕一个点旋转 Vector2
【发布时间】:2017-03-25 14:14:58
【问题描述】:

我试图了解当我们围绕任意点旋转向量时会发生什么。如果 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>

【问题讨论】:

    标签: math vector three.js geometry


    【解决方案1】:

    您正在围绕点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
    

    【讨论】:

    • 我知道我在推动这一点,但有没有机会帮助我理解?
    • 添加了一个廉价的 ASCII 草图。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多