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