繁体   English   中英

旋转三角形以匹配正方形的另一半

[英]rotate triangle to match other half of square

好的,

所以我有一个由2个三角形组成的图块组成的3D世界。 现在,当我将鼠标悬停在这些三角形之一上时,我可以获得3个顶点及其法线等。

我要实现的是,基于悬停的蓝色三角形的顶点,围绕斜边(中间的黑线)旋转它或执行其他操作? 这样我就可以得到匹配点(如图所示)。 现在我有了正方形的4个顶点,因此我可以在其上面绘制一个正方形,该正方形覆盖2个三角形。

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

图片

我认为,如果您知道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 v = new THREE.Vector3().subVectors( a, b ); 其中a和b是直线上的点。

在此小提琴中,您可以看到它起作用。 请注意,在较新的Three.js库中, .sub( a, b )更改为subVectors( a, b )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM