• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            OpenCASCADE點向平面投影

            Posted on 2019-05-29 21:02 eryar 閱讀(1633) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            OpenCASCADE點向平面投影

             

            OpenCASCADEProjLib類提供了解析曲線(直線、圓、橢圓、拋物線、雙曲線)向解析曲面(平面、圓柱面、圓錐面、球面、圓環面)投影的功能,主要用來計算三維曲線在二維參數空間的參數。

             

            其中點向平面投影是最簡單的情況,本文主要介紹點向平面投影的注意事項。ProjLib類是個工具類,因為其函數都是靜態函數。點向平面投影很簡單,直接用ProjLib::Project(aPlane, aPoint)即可。

             

            其實現代碼如下:

            gp_Pnt2d  ProjLib::Project(const gp_Pln& Pl, const gp_Pnt& P)
            {
              Standard_Real U, V;
              ElSLib::Parameters(Pl, P, U, V);
              return gp_Pnt2d(U,V);
            }
            inline void ElSLib::Parameters(const gp_Pln& Pl,
                      const gp_Pnt& P,
                      Standard_Real& U,
                      Standard_Real& V) {
              ElSLib::PlaneParameters(Pl.Position(),P,U,V);
            }
            void ElSLib::PlaneParameters (const gp_Ax3& Pos,
                     const gp_Pnt& P,
                     Standard_Real& U,
                     Standard_Real& V)
            {
              gp_Trsf T;
              T.SetTransformation (Pos);
              gp_Pnt Ploc = P.Transformed (T);
              U = Ploc.X();
              V = Ploc.Y();
            }
            

            從上面的代碼可以看出,點向平面投影實現就是將點變換到平面所在的坐標系中。使用這個類向平面投影要注意的事項是平面的構造。平面gp_Pln有如下構造函數:

             

            默認構造函數:構造了一個XOY平面

            基于一個坐標系gp_Ax3構造平面

            基于一個點和一個方向構造平面

            基于平面的系數方程,即AX+BY+CZ+D=0

            前兩個構造函數很清晰,而第三個構造函數即基于一個點和一個方向構造平面的方式沒有明確,注釋不清晰。這里的方向指定了平面的法向,但是還缺少一個方向來確定一個坐標系,所以使用這個構造函數來生成平面的時候,需要理解其生成另外一個方向的算法是不是自己需要的。

            gp_Pln::gp_Pln (const gp_Pnt& P,
              const gp_Dir& V)
            {
              Standard_Real A = V.X();
              Standard_Real B = V.Y();
              Standard_Real C = V.Z();
              Standard_Real Aabs = A;
              if (Aabs < 0) Aabs = - Aabs;
              Standard_Real Babs = B;
              if (Babs < 0) Babs = - Babs;
              Standard_Real Cabs = C;
              if (Cabs < 0) Cabs = - Cabs;
              //  pour determiner l'axe X :
              //  on dit que le produit scalaire Vx.V = 0. 
              //  et on recherche le max(A,B,C) pour faire la division.
              //  l'une des coordonnees du vecteur est nulle. 
              if( Babs <= Aabs && Babs <= Cabs) {
                if (Aabs > Cabs)  pos = gp_Ax3 (P, V, gp_Dir (-C,0., A));
                else              pos = gp_Ax3 (P, V, gp_Dir ( C,0.,-A));
              }
              else if( Aabs <= Babs && Aabs <= Cabs) {
                if (Babs > Cabs)  pos = gp_Ax3 (P, V, gp_Dir (0.,-C, B));
                else              pos = gp_Ax3 (P, V, gp_Dir (0., C,-B));
              }
              else {
                if (Aabs > Babs)  pos = gp_Ax3 (P, V, gp_Dir (-B, A,0.));
                else              pos = gp_Ax3 (P, V, gp_Dir ( B,-A,0.));
              }
            }
            

            當這里確定平面坐標系的方式與需要的不一致時,在使用投影算法的時候就會產生問題。

            久久se精品一区精品二区国产| 久久亚洲精品国产亚洲老地址| 国产精品女同久久久久电影院| 狠狠色噜噜色狠狠狠综合久久| 婷婷久久久亚洲欧洲日产国码AV| 久久人妻少妇嫩草AV无码专区| 香港aa三级久久三级| 欧美一级久久久久久久大片| 亚洲午夜无码久久久久| 久久九九亚洲精品| 亚洲美日韩Av中文字幕无码久久久妻妇| 久久精品aⅴ无码中文字字幕不卡| 亚洲国产精品久久电影欧美| 国产亚洲色婷婷久久99精品91| 欧美久久一区二区三区| 久久线看观看精品香蕉国产| 热久久国产欧美一区二区精品| 久久久久人妻一区精品性色av | 欧美亚洲国产精品久久蜜芽| 国产精品亚洲综合久久| 久久婷婷综合中文字幕| 久久九九精品99国产精品| 色天使久久综合网天天| 亚洲国产天堂久久综合网站| 久久综合精品国产二区无码| 亚洲国产成人久久笫一页 | 中文字幕亚洲综合久久2| 精品国产乱码久久久久久人妻| 久久99热这里只有精品国产| 久久精品国产清高在天天线| 亚洲精品无码久久千人斩| 久久午夜无码鲁丝片午夜精品| 久久成人精品视频| av午夜福利一片免费看久久| 99久久精品免费看国产一区二区三区 | 99精品国产99久久久久久97| 欧美成a人片免费看久久| 国产精品热久久毛片| 久久免费视频观看| 欧美久久精品一级c片片| 久久精品一区二区|