VectorDrawよくある質問は仕上げ:ポイントの頂点ポリラインの周りを回転する方法?

    VectorDraw開発フレームワーク(VDF)は、グラフィックスエンジンライブラリの可視化のためのアプリケーションです。VDFを使用すると、簡単に作成、編集、管理することが可能な機能、エクスポート、インポートおよび印刷2Dおよび3Dグラフィックスのファイルを提供しています。   

    VectorDrawウェブライブラリー(ジャバスクリプト) CAD図面を開くことができ、そのようなWindowsの、アンドロイド、iOSとLinuxなどの任意の一般的なベクトルオブジェクトのサポートHTML5標準プラットフォーム上に表示することができないだけ。いいえ、インストール、VectorDrawウェブライブラリ(ジャバスクリプト)は、任意の支持体上で実行することができませんキャンバスタグやJavascriptの主要なブラウザ(クローム、Firefoxの、サファリ、オペラ 、イルカ、ボート、など)。これは形式DXF、DWG、DGN、SKP(の様々な使用することができます意味グーグルのSketchUpの)、VDMLをので、任意のデスクトップ、タブレットPC、スマートフォンやポータブルノートブックであなたのビジネスを示しています。


Q:

    どのように(コードを介して)ポリラインの頂点のいくつかのポイントを中心に回転させることができ、他の頂点は同じまま?    

回答:

この問題は、次のコードを試すことができ、非常に簡単です:

      プライベートボイドMyButton_Click(オブジェクト送信者、のEventArgs電子)
        { 
            vdDocumentドキュメント= vdFramedControl1.BaseControl.ActiveDocument。doc.New(); 
            頂点VRTS =新しい頂点(); 
            vrts.Add(1,1,0,0); vrts.Add(1,4,0​​,0); vrts.Add(4,4,0,0); vrts.Add(5,3,0,0 ); 
            vdPolyline PL =新しいvdPolyline(DOC、VRTS)。
            doc.Model.Entities.AddItem(PL)。
            pl.Invalidate(); 
            // ---------------ポリラインを作成--------- 
           
            
            //頂点の周りに45度反時計回りのためにそれを回転させる[1] 
             
            頂点orig_vert =新しい頂点( pl.VertexList); //が変更されますポリラインの頂点リストを取得します
            gPoint PT1 =新しいgPoint( orig_vert [1] gPointなど); 
       
            //上記の項目2とから頂点が変更されます
            頂点は)(=新しい頂点を保ちます。
            keep.Add(新しい頂点(orig_vert [0])); 
            keep.Add(新しい頂点(orig_vert [1]))。

            二重orig_angle = pt1.GetAngle(gPointとしてorig_vert [2])。//新しい角度
            orig_angle + = VectorDraw.Geometry.Globals.DegreesToRadians(45.0d)。

            行列mat =新しいMatrix(); 
            mat.TranslateMatrix(-1.0d * PT1)。
            mat.RotateZMatrix(orig_angle)。
            mat.TranslateMatrix(PT1)。
            mat.Transform(orig_vert)。//これは、新しい頂点を生成する

            (; iは2 <I ++は、I = 0 INT)のために
            { 
                orig_vert [I] = [i]をキープ。//変更されなかった頂点を復元
            }
 
            pl.VertexList = orig_vertを。
            pl.Update(); 
            pl.Invalidate(); 

        }


おすすめ

転載: blog.51cto.com/14477114/2437165