我的Winforms应用程序从一个.STL(stereolitography)文件中读取一个3D扫描仪给出的3D模型(一组XYZ坐标的点)。扫描的对象是一个平台(平行六面体),一些多面颗粒位于其上。平台表面可以被认为是平的,平台位于桌面上(它的表面也可以被认为是平的)。
3D模型沿着X轴和Z轴倾斜:
我需要在X轴和Z轴上水平对齐,好像平台与地面平行(通过调整点的Y坐标):
我怀疑这是一个标准的数学问题--但我不是数学Maven,所以我在寻找一个算法或公式。
先谢谢你。如果我没有把我的情况解释清楚,请随时要求澄清。
如果简化任务-几何中心沿着X轴和Z轴的点(Pcenter)明确位于平台顶面,需要围绕Pcenter旋转3D模型,使位于平台顶面的所有点具有相同的Y坐标(Pcenter.Y)。
1条答案
按热度按时间j5fpnvbx1#
因此,我的三维模型旋转的最终解决方案是(在John Alexiou和shingo的帮助下-谢谢):
1.确定属于平面的3个点(它们应该相距很远,因为在我的扫描中不可避免地会有一些噪声)-它们定义了一个三角形。
1.计算三角形的法向量并计算四元数: