Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#螺旋工具箱如何在点之间绘制矩形棱镜?_C#_Wpf_Windows_3d_Helix 3d Toolkit - Fatal编程技术网

C#螺旋工具箱如何在点之间绘制矩形棱镜?

C#螺旋工具箱如何在点之间绘制矩形棱镜?,c#,wpf,windows,3d,helix-3d-toolkit,C#,Wpf,Windows,3d,Helix 3d Toolkit,我试图在两点之间绘制一个形状(表示为Point3D对象) 目标是创建一条从点a到点B的路径/道路,作为一个矩形棱柱体,因此它的侧面应平坦且短(例如,长度为10,宽度为3,高度为1,形状的末端位于每个点) 到目前为止,我已经尝试使用Helix Toolkit的内置辅助方法创建长方体形状,使用点之间的中点作为中心: AddBox(Point3D center, Vector3D x, Vector3D y, double xlength, double ylength, double zlength

我试图在两点之间绘制一个形状(表示为
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)
AddTube(IList路径,双直径,塔顶内,布尔闭合)

谢谢

所以我设法找到了以下解决方案

本质上,我只是在那个链接上重新安装了代码来完成我需要做的事情。我调整了厚度和宽度的比例因子,并创建了一个枚举,可以打开该枚举设置棱镜的方向:

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;
 }
然后,调用
ScaleVector
时使用
dir
向量(请参阅本答案开头的链接)