0

设置和获取导入的 STL 文件位置的方法是什么。我正在寻找一种将位置 x、y、z 设置为导入的 STL 文件的解决方案,例如可以设置为 Joint。

4

1 回答 1

0

通常情况下,事物是通过变换矩阵在视野范围内移动的。该矩阵由一个 3 x 3 的旋转矩阵、一个 1 x 3 的位置和 4 x 1 的倾斜/拉伸矩阵组成。所有这些共同构成了一个 4 x 4 的变换矩阵。

导入的 stl 实际上包含很多位置。但你需要做的就是抓住其中一个。下面我刚刚抓住了边界框的最小点。

然后到达一个地方创建一个单位变换矩阵以确保旋转和倾斜为零。现在将您的位置插入矩阵的位置部分。transformBy 函数现在会将 stl 的每个点移动到新位置。

要在点之间移动,您需要点之间的矢量差。

            Mesh myMesh = Mesh.CreateBox(10, 10, 10);
            //Mesh myMesh = new Mesh();

            Point3D getLocation = myMesh.BoxMin;
            Point3D setLocation = new Point3D(20, -10, 0);

            Point3D moveVector = setLocation - getLocation;

            Transformation goPlaces = new Transformation(1);
            goPlaces[0, 3] = moveVector.X;
            goPlaces[1, 3] = moveVector.Y;
            goPlaces[2, 3] = moveVector.Z;

            //Transformation goPlaces = new Transformation(
            //  new double[,]
            //  {
            //      { 1, 0, 0, 20 }, 
            //      { 0, 1, 0,-10 },
            //      { 0, 0, 1,  0 },
            //      { 0, 0, 0,  1 }
            //  }
            //);

            Transformation goBack = (Transformation)goPlaces.Clone();
            goBack.Invert();


            myMesh.TransformBy(goPlaces);

            myMesh.TransformBy(goBack);

干杯!

于 2021-07-07T16:43:14.213 回答