如何旋转和定位中心对象?

Posted

技术标签:

【中文标题】如何旋转和定位中心对象?【英文标题】:How to rotate and position the center object? 【发布时间】:2021-12-10 14:37:21 【问题描述】:

我创建了一个工具箱,可以旋转和重新定位网格,中间有一个轴。当我将旋转和位置分开时,位置将返回到上一个。但是,这会导致不在网格上旋转。所以我所做的是使用乘法。但这不是我所期望的,因为网格位置应该是我标记的位置(而不是网格轴)。 如何旋转和定位对象,使其保持在指定位置并在该位置旋转? 这是我的代码:

const translation = new THREE.Matrix4().makeTranslation(
  this.valueAOA_X,
  this.valueAOA_Y,
  this.valueAOA_Z
);
const angleRadian = CoordinateConverter.degreeToRadian(
  this.valueAOA_Rotation
);
const rotationAOA = new THREE.Matrix4().makeRotationZ(angleRadian);   
this.selectedModel.setPlacementTransform(
  rotationAOA.multiply(translation)
);

【问题讨论】:

你为什么和Matrix4一起工作?使用简单的selectedModel.position.set(x, y, z); 然后selectedModel.rotation.set(x, y, z); 有什么问题吗? 因为我使用了 Autodesk Forge Scene Builder。因此,为了能够与 viewerm 进行交互,我必须使用 Matrix4。 好的,我添加了[autodesk-forge] 标签,希望 Autodesk 支持团队的人能够在他们的平台上为您提供帮助。 嗨马奎佐。我通过平移多次旋转修复它 【参考方案1】:

通过这一行修复它:

  this.selectedModel.setPlacementTransform(
    translation.multiply(rotationAOA)
  );

【讨论】:

以上是关于如何旋转和定位中心对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何围绕对象外部的点旋转节点(即不围绕对象的中心点旋转)

如何在 OpenGL 中围绕 Z 轴中心旋转对象?

如何使用MATLAB围绕不是图像中心点的点旋转图像?

android RotateAnimation怎样设置旋转中心点

如何在Android中旋转位图,使图像中心平滑,无振荡运动

最初按中心旋转时围绕点旋转对象