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)。