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