C # Helix Toolkit, как нарисовать прямоугольную призму между точками?

Я пытаюсь нарисовать фигуру между двумя точками (представленными как 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)

Спасибо


person The Whether Man    schedule 27.06.2017    source источник


Ответы (1)


Итак, мне удалось найти следующее решение здесь.

По сути, я просто переделал код по этой ссылке, чтобы он делал то, что мне было нужно. Я настроил коэффициент масштабирования для толщины и ширины, а также сделал перечисление, которое я могу включить, чтобы установить направление призмы:

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 (см. ссылку в начале этого ответа).

person The Whether Man    schedule 10.07.2017