【问题标题】:THREE JS change vector length by absolute value三个JS通过绝对值改变向量长度
【发布时间】:2014-12-29 20:37:24
【问题描述】:

我有两个 Vector3 点 A 和 B。

我想将向量 C 放置在从 A 到 B 的轨迹路径中,但要在其长度上增加 100 品脱。

我如何计算这个向量?

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您可以在 three.js 中将非零长度向量增加长度 len,如下所示:

    var oldLength = vector.length();
    
    if ( oldLength !== 0 ) {
    
        vector.multiplyScalar( 1 + ( len / oldLength ) );
    
    }
    

    所以,这是计算点 C 的方法。

    var A = new THREE.Vector3( 10, 20, 30 );
    var B = new THREE.Vector3( 20, 30, 40 );
    var C = new THREE.Vector3();
    
    var len = 10;
    
    C.subVectors( B, A ).multiplyScalar( 1 + ( len / C.length() ) ).add( A );
    

    three.js r.69

    【讨论】:

    • 我尝试了 length() 但我没有意识到如何使用它。谢谢
    • 在您的回答中,我没有看到 A 和 B 坐标。什么是“矢量”?
    • @AphexHenry 好点。我回答了标题中的问题。帖子的正文提出了一个不同的问题。
    【解决方案2】:

    在二维上下文中,这将为您提供 C 的坐标:

     var oldLength = A.distanceTo(B);
     var newLength = oldLength + 100;
    
    if(oldLength > 0)
    {
      C.x = A.x + (B.x - A.x) * newLength / oldLength;
      C.y = A.y + (B.y - A.y) * newLength / oldLength;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多