青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

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-09-19 13:19 eryar 閱讀(1933) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE圓與平面求交

eryar@163.com

 

在 解析幾何求交之圓與二次曲面中分析了OpenCASCADE提供的類IntAna_IntConicQuad可以用來計算圓與二次曲面之間的交點,這個算法是將平面Plane作為二次曲面的一個特例來處理,最后主要是對三角函數方程進行求解。

 

當直接使用圓和平面作為參數時,IntAna_IntConicQuad重載了函數Perform來對圓和平面進行求交計算,這時的算法與前面解三角函數不同,代碼如下:

void IntAna_IntConicQuad::Perform (const gp_Circ& C, const gp_Pln& P,
                  const Standard_Real Tolang,
                  const Standard_Real Tol)
{
  
  done=Standard_False;
  
  gp_Pln Plconic(gp_Ax3(C.Position()));
  IntAna_QuadQuadGeo IntP(Plconic,P,Tolang,Tol);
  if (!IntP.IsDone()) {return;}
  if (IntP.TypeInter() == IntAna_Empty) {
    parallel=Standard_True;
    Standard_Real distmax = P.Distance(C.Location()) + C.Radius()*Tolang;
    if (distmax < Tol) {
      inquadric = Standard_True;
    }
    else {
      inquadric = Standard_False;
    }
    done=Standard_True;
  }
  else     if(IntP.TypeInter() == IntAna_Same) { 
    inquadric = Standard_True;
    done = Standard_True;
  }
  else {
    inquadric=Standard_False;
    parallel=Standard_False;
    gp_Lin Ligsol(IntP.Line(1));
    
    gp_Vec V0(Plconic.Location(),Ligsol.Location());
    gp_Vec Axex(Plconic.Position().XDirection());
    gp_Vec Axey(Plconic.Position().YDirection());
    
    gp_Pnt2d Orig(Axex.Dot(V0),Axey.Dot(V0));
    gp_Vec2d Dire(Axex.Dot(Ligsol.Direction()),
          Axey.Dot(Ligsol.Direction()));
    
    gp_Lin2d Ligs(Orig,Dire);
    gp_Pnt2d Pnt2dBid(0.0,0.0);
    gp_Dir2d Dir2dBid(1.0,0.0);
    gp_Ax2d Ax2dBid(Pnt2dBid,Dir2dBid);
    gp_Circ2d Cir(Ax2dBid,C.Radius());
    
    IntAna2d_AnaIntersection Int2d(Ligs,Cir);
    
    if (!Int2d.IsDone()) {return;}
    
    nbpts=Int2d.NbPoints();
    for (Standard_Integer i=1; i<=nbpts; i++) {
      
      gp_Pnt2d resul(Int2d.Point(i).Value());
      Standard_Real X= resul.X();
      Standard_Real Y= resul.Y();
      pnts[i-1].SetCoord(Plconic.Location().X() + X*Axex.X() + Y*Axey.X(),
             Plconic.Location().Y() + X*Axex.Y() + Y*Axey.Y(),
             Plconic.Location().Z() + X*Axex.Z() + Y*Axey.Z());
      paramonc[i-1]=Int2d.Point(i).ParamOnSecond();
    }
    done=Standard_True;
  }
}

從上述代碼中可以看出,直接對圓和平面求交的算法步驟如下:

l 對圓所在平面與平面進行求交,來判斷圓所在平面與平面的狀態:平行或是圓在平面內部;

l 如果圓所在平面與平面不平行,則得出交線;

l 然后將交線和圓轉換成二維空間進行求交計算;

 

我覺得在得出圓所在平面與平面的交線后,再轉換到二維空間來計算交點的方法有點復雜。在得到兩個平面的交線后,就可以直接將圓心P0坐標向交線投影得到垂點Pm,先判斷圓心到Pm點距離等于半徑時,圓和平面就只有一個交點,就是Pm。小于半徑時有兩個交點,將Pm沿著交線方向分別移動L和-L距離就可以得到交點了,其中:

 

這樣處理只涉及到一個點向直線投影、一個開方及幾個向量操作,代碼簡單容量理解。


為了方便大家在移動端也能看到我的博文和討論交流,現已注冊微信公眾號,歡迎大家掃描下方二維碼關注。
Shing Liu(eryar@163.com)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久久.com| 黄色成人在线免费| 99re6这里只有精品| 欧美国产视频在线| 亚洲黄色性网站| 欧美国产精品日韩| 亚洲国产成人tv| 一本到高清视频免费精品| 一本色道精品久久一区二区三区 | 久久精选视频| 久久久久久久久久看片| 欧美暴力喷水在线| 欧美激情精品久久久久久免费印度 | 亚洲欧洲日夜超级视频| 亚洲区国产区| 在线综合视频| 久久精品三级| 亚洲精品专区| 香蕉乱码成人久久天堂爱免费| 欧美在线视频一区| 欧美大片免费久久精品三p| 国产精品久久福利| 亚洲高清视频的网址| 亚洲一级网站| 欧美h视频在线| 亚洲综合日韩在线| 欧美激情精品久久久久久大尺度| 欧美日韩中文| 亚洲第一精品夜夜躁人人躁| 亚洲综合成人在线| 欧美高清成人| 先锋影音网一区二区| 欧美日韩午夜精品| 伊人色综合久久天天五月婷| 亚洲亚洲精品在线观看| 牛牛影视久久网| 一区二区三区成人| 欧美精品七区| 亚洲国产成人久久| 欧美一级视频免费在线观看| 亚洲国产毛片完整版| 久久精品国产精品亚洲精品| 亚洲福利电影| 亚洲综合国产| 欧美日韩在线观看视频| 亚洲国产专区| 久久九九免费视频| 亚洲婷婷在线| 欧美成人日本| 亚洲欧美一区二区激情| 欧美视频在线播放| 99精品国产热久久91蜜凸| 久久综合中文| 久久精品国产999大香线蕉| 国产欧美日韩一区| 亚洲一区二区三区中文字幕| 99视频在线观看一区三区| 欧美精品国产精品| 亚洲精品视频在线看| 亚洲国产精品久久久久秋霞不卡| 久久先锋资源| 亚洲日本理论电影| 亚洲激情视频| 欧美电影专区| 99视频国产精品免费观看| 亚洲女人天堂av| 欧美高清hd18日本| 蜜桃久久精品乱码一区二区| 亚洲高清二区| 亚洲福利免费| 欧美区在线观看| 亚洲网站在线观看| 亚洲天堂免费在线观看视频| 国产精品亚洲一区| 久久成人国产| 久久一区二区精品| 亚洲破处大片| 亚洲国产精品久久久| 欧美日韩成人一区二区| 亚洲在线网站| 亚洲欧美日韩另类| 国产伦精品一区二区三区在线观看| 亚洲国产精品一区在线观看不卡| 久久伊人精品天天| 亚洲国产成人精品久久| 亚洲激情二区| 国产麻豆精品久久一二三| 久久美女艺术照精彩视频福利播放| 久久久无码精品亚洲日韩按摩| 亚洲激情社区| 亚洲少妇一区| 亚洲国产日韩欧美在线动漫| 99国产成+人+综合+亚洲欧美| 欧美特黄一级| 久久综合狠狠综合久久综青草 | 欧美aⅴ99久久黑人专区| 欧美日韩国产欧| 久久不见久久见免费视频1| 久久亚洲电影| 亚洲在线视频网站| 久热精品视频| 亚洲免费网站| 亚洲人久久久| 国产精品激情| 欧美~级网站不卡| 欧美激情视频一区二区三区在线播放 | 欧美日韩一区二区三区在线观看免 | 久久精品在线观看| 欧美久久久久久久久久| 久久国产精品电影| 欧美国产亚洲精品久久久8v| 欧美一区免费| 免费观看欧美在线视频的网站| 午夜欧美精品| 欧美日韩国产亚洲一区| 蜜臀av性久久久久蜜臀aⅴ| 国产精品v欧美精品v日韩精品| 亚洲高清在线观看| 影音先锋久久精品| 亚洲在线观看免费| 亚洲私拍自拍| 欧美另类videos死尸| 久久一区二区视频| 国产精品一区在线播放| 亚洲巨乳在线| 亚洲精品日韩在线观看| 性欧美video另类hd性玩具| 亚洲一二三级电影| 欧美黄色aa电影| 久久综合色婷婷| 国产精品五区| 香蕉久久精品日日躁夜夜躁| 亚洲一区二区在线| 欧美视频在线播放| 亚洲毛片一区二区| 亚洲精品国产系列| 欧美顶级艳妇交换群宴| 亚洲成人资源网| 亚洲毛片一区| 欧美日韩免费视频| 99在线|亚洲一区二区| 中国成人在线视频| 欧美色视频一区| 亚洲综合色视频| 久久精品首页| 精品999日本| 久久综合色影院| 91久久中文| 在线综合亚洲| 国产精品女主播在线观看| 午夜久久福利| 老司机精品久久| 亚洲欧洲日韩女同| 欧美日韩日本国产亚洲在线| 亚洲欧美激情视频| 久久久久综合一区二区三区| 狠狠色2019综合网| 欧美国产1区2区| 日韩视频―中文字幕| 欧美有码在线观看视频| 亚洲国产va精品久久久不卡综合| 欧美高清在线视频| 亚洲午夜激情| 亚洲激情视频在线| 这里只有精品丝袜| 亚洲一区欧美| 国产精品久久午夜| 久久er99精品| 91久久综合| 欧美一区二区三区视频免费播放| 狠狠色丁香久久婷婷综合_中| 美女任你摸久久| 日韩午夜黄色| 久久这里只有| 中文国产一区| 在线观看国产精品网站| 欧美丝袜第一区| 久久久7777| 一区二区三区久久精品| 另类激情亚洲| 亚洲一区二区三区视频播放| 在线成人h网| 亚洲欧美一区二区三区久久| 亚洲高清网站| 国产日韩精品一区观看| 欧美久久精品午夜青青大伊人| 欧美一区二区网站| 亚洲精品一区二区三区蜜桃久| 久久电影一区| 在线亚洲精品| 亚洲日本乱码在线观看| 国产综合久久久久久| 国产精品国产成人国产三级| 欧美国产在线观看| 久久久久久久一区二区| 亚洲欧美视频一区二区三区| 一区二区成人精品| 欧美国产日韩一区二区在线观看| 久久国产免费看| 亚洲在线中文字幕|