2017-06-27 27 views
0

私は2つの点の間に図形を描画しようとしています(Point3Dのオブジェクトで表されます)。C#Helix Toolkitポイント間で直角プリズムを描く方法は?

目的は、ポイントAからBまで直角プリズムとしてパス/道路を作成することです。そのため、フラットで短辺になります(たとえば、長さ10、幅3、高さ1 、各点での形状の端を持つ)。

これまでのところ、私は中心として点間の中点を使用して、らせんツールキットの組み込みのヘルパーメソッドを使用して箱状を作成しようとしました:

AddBox(Point3D center, Vector3D x, Vector3D y, double xlength, double ylength, double zlength, BoxFaces faces = BoxFaces.All) 

問題があれば、私は理解していないですまたは、ボックスの回転角度を制御して、2つのポイントが互いに斜めであるか、高さが異なる場合に接続するようにするかを指定します。

これをよりエレガントに達成する方法はありますか?たぶんもっとパスとしてポイントを提供AddTube方法のような何か?:

AddTube(IList<Point3D> path, double diameter, int thetaDiv, bool isTubeClosed) 

おかげ

答えて

0

だから私は、次の解決策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への呼び出しで使用されこの回答の冒頭に)。

関連する問題