我正在尝试将STL文件上传到MATLAB并能够操作它,但无法找到最佳方法。
我要做的是将STL导入手工工具的文件,并能够通过给出滚动,俯仰和偏转角度来旋转3D图像。整个系统将涉及IMU的现场读数,计算这些角度(将使用9轴IMU-9250,并希望将空间运动纳入其中,但这是另一天的进展),这将改变一个改变这一角度的功能。从STL制作的模型的方向,以实时显示身体是如何移动的。重要的是要注意身体是固定的,所以没有点可以相对移动(简化问题)。
目前我还没有走得太远,但已经在太空中修复了STL模型:
model = createpde(3);
importGeometry(model,'Test_model.stl');
pdegplot(model);
这将绘制STL文件。该模型由一定数量的面和顶点组成,可以绘制,但我看不到操纵它们的方法。我认为应该有一些方法将其转换为x,y,z中的点的3D矩阵,我可以通过旋转矢量多次提供旋转三个角度的新位置。
Rx = rotx(psi);
Ry = roty(theta);
Rz = rotz(phi);
R = Rx*Ry*Rz;
然后将模型乘以此并更新图。
我还需要一种通过某些值来抵消所有点的方法,以便能够改变旋转点(放置IMU的位置)。我想一旦我得到一个矩阵中的坐标,那么我可以将它们全部偏移到每个方向x,y和z的某些值。
任何人都可以帮忙解决这个问题,我一直在寻找类似的项目,但到目前为止我还没能找到任何有良好代码解释的东西。我提出的方式只是我的想法,如果有一个更简单的方法,那么请说。谢谢!
答案 0 :(得分:0)
我没有评论权限,所以这似乎不是一个完整的答案。
我已经在MATLAB中完成了这种类型的精简用于其他研究,但由于我没有任何工具箱,因此我必须编写自己的数据解析器,或者当时不存在importGeometry()。 STL被构造为三角形列表,每个三角形具有法线和三个顶点。我问你,导入STL后的数据格式是什么?一系列的位置,结构或对象?此外,使用了什么样的s / w来制作它。 gmsh格式更容易使用,因为它根据simplex包含的点为您提供了一个简化的点列表和它们之间的连接列表。
如果importGeometry的输出是一个带有完整数据集的结构,那么你将有重复的数据,需要(1)解析结构,(2)删除重复数据,(3)将结果堆叠成3-by- N或N-by-3矩阵,然后使用旋转矩阵对该结果进行操作并更新图表。
您还没有真正询问过具体问题,但我希望我的意见有所帮助。