【发布时间】:2012-12-11 12:19:55
【问题描述】:
我正致力于在 Java3D 中显示 3D 模型 (IFC)。我需要用 IFC 模型给出的 2 个向量、一个方向向量和一个轴向量来旋转对象。
但我不知道如何获得正确的角度。
代码:
// Create vectors
Vector3f directionVector = new Vector3f(dx, dy, dz);
Vector3f axisVector = new Vector3f(ax, ay, az);
//Calculate angle
float angle = axisVector.angle(directionVector);
//create AxisAngle4f
AxisAngle4f axisAngle = new AxisAngle4f(axisVector, angle);
axisVector 总是 (0.0, 0.0, 1.0),所以需要在 Z 轴上旋转
但是当我计算角度时,它似乎总是 1.5707964 (90°):
Example 1:
dir: (-1.0, 0.0, 0.0)
axis: (0.0, 0.0, 1.0)
angle: 1.5707964 (90.00000250447816)
AA: (0.0, 0.0, 1.0, 1.5707964)
Example 2:
dir: (0.0, 1.0, 0.0)
axis: (0.0, 0.0, 1.0)
angle: 1.5707964 (90.00000250447816)
AA: (0.0, 0.0, 1.0, 1.5707964)
Example 3:
dir: (1.0, 0.0, 0.0)
axis: (0.0, 0.0, 1.0)
angle: 1.5707964 (90.00000250447816)
AA: (0.0, 0.0, 1.0, 1.5707964)
我通过测试知道 -1.0 表示倒转 180°。
谁能帮我理解我做错了什么?
编辑
Documentation 用于放置对象(方向和轴)
结果截图:
- 橙色:是地板
- 绿色:是屋顶
- 红色:是旋转点
- 左:侧面透视
- 右图:俯视图
- 3个slab的组有方向方向(0.0,1.0,0.0)
- 2个slab的组有direction方向(1.0,0.0,0.0)
- 屋顶方向:(-1.0, 0.0, 0.0)
我做了 *2 测试来模拟 -1.0 的 180°。正如您在上一个示例中看到的那样,屋顶被正确绘制。
【问题讨论】:
标签: java matrix 3d rotation java-3d