C# Helix Toolkit 如何在点之间绘制直角棱柱?
C# Helix Toolkit how to draw a rectangular prism between points?
我正在尝试在两点之间绘制一个形状(表示为 Point3D
个对象)。
目标是创建一个从 A 点到 B 点的 path/road 作为直角棱柱体,因此它的边是平的和短的(例如,长度为 10,宽度为 3,并且高度为 1,每个点都有形状的末端)。
到目前为止,我已经尝试使用 Helix Toolkit 的内置辅助方法创建一个盒子形状,使用两点之间的中点作为中心:
AddBox(Point3D center, Vector3D x, Vector3D y, double xlength, double ylength, double zlength, BoxFaces faces = BoxFaces.All)
问题是我不明白我是否或如何控制盒子的旋转和角度,以便它连接两个点,如果它们彼此成对角线或处于不同高度。
有没有办法更优雅地实现这一点?也许更像是将点作为路径提供的 AddTube 方法?:
AddTube(IList<Point3D> path, double diameter, int thetaDiv, bool isTubeClosed)
谢谢
所以我设法找到了以下解决方案here。
本质上,我只是修改了 link 处的代码来完成我需要做的事情。我调整了厚度和宽度的比例因子,并制作了一个枚举,我可以打开它来设置棱镜的方向:
Vector3D dir = new Vector3D();
switch (faceDirection)
{
case VectorUpFace.Up:
dir = new Vector3D(0, 0, 1);
break;
case VectorUpFace.Left:
dir = new Vector3D(0, -1, 0);
break;
case VectorUpFace.Right:
dir = new Vector3D(0, 1, 0);
break;
case VectorUpFace.Front:
dir = new Vector3D(1, 0, 0);
break;
}
然后,dir
向量用于调用 ScaleVector
(请参阅本答案开头的 link)。
我正在尝试在两点之间绘制一个形状(表示为 Point3D
个对象)。
目标是创建一个从 A 点到 B 点的 path/road 作为直角棱柱体,因此它的边是平的和短的(例如,长度为 10,宽度为 3,并且高度为 1,每个点都有形状的末端)。
到目前为止,我已经尝试使用 Helix Toolkit 的内置辅助方法创建一个盒子形状,使用两点之间的中点作为中心:
AddBox(Point3D center, Vector3D x, Vector3D y, double xlength, double ylength, double zlength, BoxFaces faces = BoxFaces.All)
问题是我不明白我是否或如何控制盒子的旋转和角度,以便它连接两个点,如果它们彼此成对角线或处于不同高度。
有没有办法更优雅地实现这一点?也许更像是将点作为路径提供的 AddTube 方法?:
AddTube(IList<Point3D> path, double diameter, int thetaDiv, bool isTubeClosed)
谢谢
所以我设法找到了以下解决方案here。
本质上,我只是修改了 link 处的代码来完成我需要做的事情。我调整了厚度和宽度的比例因子,并制作了一个枚举,我可以打开它来设置棱镜的方向:
Vector3D dir = new Vector3D();
switch (faceDirection)
{
case VectorUpFace.Up:
dir = new Vector3D(0, 0, 1);
break;
case VectorUpFace.Left:
dir = new Vector3D(0, -1, 0);
break;
case VectorUpFace.Right:
dir = new Vector3D(0, 1, 0);
break;
case VectorUpFace.Front:
dir = new Vector3D(1, 0, 0);
break;
}
然后,dir
向量用于调用 ScaleVector
(请参阅本答案开头的 link)。