【发布时间】:2018-03-20 17:20:44
【问题描述】:
给定两个具有共同边 e 的面 f 和 f',我正在寻找一种将 f 围绕 e 旋转的方法。
我的目标是展开 f 和 f',以便它们可以映射到同一个计划上。更具体地说,我想要在展开 (r') 之后不属于 e 的 f 的顶点 r 的坐标。
目前我已尝试应用此处描述的方法:https://sites.google.com/site/glennmurray/Home/rotation-matrices-and-formulas/rotation-about-an-arbitrary-axis-in-3-dimensions
在截图的例子中,我已经简化了它,因为旋转轴已经在 Z 轴上。所以我的代码如下所示:
// Object contains only two faces
var geometry = object.children[0].geometry;
var f = geometry.faces[0];
var fprime = geometry.faces[1];
// Find two vertices in common
var edge = [f.a, f.b];
if (f.a != fprime.a && f.a != fprime.b && f.a != fprime.c) {
edge = [f.b, f.c];
} else if (f.b != fprime.a && f.b != fprime.b && f.b != fprime.c) {
edge = [f.a, f.c];
}
var v1 = geometry.vertices[edge[0]];
var v2 = geometry.vertices[edge[1]];
polyhedron.translateOnAxis(v1, -1);
polyhedron.rotateOnAxis(v2, THREE.Math.degToRad(90));
polyhedron.translateOnAxis(v1, 1);
但这只会将我的物体送入太空:
如果没有旋转,对象就不会移动(如预期的那样)。有关如何修复旋转的任何提示?
【问题讨论】:
-
欢迎来到 Stackoverflow!请阅读How to Ask 和minimal reproducible example。
-
谢谢!我添加了两个屏幕截图,我还遗漏了什么吗?
-
没那么多。只是您尝试过的代码。
标签: three.js