【问题标题】:C# Helix Toolkit how to draw a rectangular prism between points?C# Helix Toolkit 如何在点之间绘制一个矩形棱柱?
【发布时间】:2017-11-30 16:12:30
【问题描述】:

我正在尝试在两点之间绘制一个形状(表示为Point3D 对象)。

我们的目标是创建一条从 A 点到 B 点的路径/道路作为矩形棱柱,因此它的侧面平坦且短(例如,长度为 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)

谢谢

【问题讨论】:

    标签: c# wpf windows 3d helix-3d-toolkit


    【解决方案1】:

    于是我设法找到了以下解决方案here

    基本上,我只是修改了该链接上的代码来完成我需要做的事情。我调整了厚度和宽度的比例因子,并制作了一个可以打开以设置棱镜方向的枚举:

    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 的调用(请参阅此答案开头的链接)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 2011-12-12
      • 2019-03-11
      相关资源
      最近更新 更多