【问题标题】:rotate triangle to match other half of square旋转三角形以匹配正方形的另一半
【发布时间】:2014-09-09 23:21:34
【问题描述】:

好的,

所以我有一个由 2 个三角形组成的瓷砖组成的 3D 世界。现在,当我将鼠标悬停在其中一个三角形上时,我可以获得 3 个顶点和它的法线等。

我想要实现的是,基于悬停的蓝色三角形的顶点,围绕斜边(中间黑线)旋转它还是做其他事情?这样我就可以获得匹配点(如图所示)。现在我有了正方形的 4 个顶点,因此我可以在它上面画一个正方形,覆盖 2 个三角形。

我正在使用threejs,所以我想通过简单的矩阵旋转我应该能够做到这一点,但我失败了。

【问题讨论】:

    标签: javascript matrix 3d rotation three.js


    【解决方案1】:

    如果你知道Vector3,我认为你应该能够做到这一点,比如黑线的v

    var axis = v.normalize();
    
    var theta = Math.PI;
    
    var matrix = new THREE.Matrix4().makeRotationAxis( axis, theta );
    

    然后将此矩阵应用于您的三角形。

    您可以通过执行v = new THREE.Vector3().subVectors( a, b ); 获得向量v,其中a 和b 是线上的点。

    在这个Fiddle中你可以看到它有效。请注意,在较新的 Three.js 库中,.sub( a, b ) 已更改为 subVectors( a, b )

    【讨论】:

    • 谢谢,但是vector3的一行?这与那条线上蓝色三角形的顶点相同吗?或者我怎么找到它
    • 我将其添加到我的答案中
    • 谢谢我会试试这个:)
    • 我好像没明白,你给我一个matrix4,而我只有3个三角形的顶点,所以matrix3,那我要如何相互应用呢?
    • 你没有几何吗?然后你可以做geometry.applyMatrix(matrix);
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多