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

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

OpenCASCADE PCurve終極問題

Posted on 2022-04-15 13:46 eryar 閱讀(1731) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE PCurve終極問題

eryar@163.com

 

Abstract: Geometry Curves and Surfaces in BRep are parametric equations. So given a parametric space curve and a geometry surface can map to a 3d geometry curve. The parametric space curve is PCurve. When given a 3d geometry curve and surface, how to get the PCurve?

Keywords: OpenCASCADE, BRep, PCurve, Project, ProjLib

1 Introduction

看過《西游記》的對其中一些臺詞記憶深刻,像唐僧每次介紹自己時說“貧僧唐三藏,從東土大唐而來,去往西天拜佛取經(jīng)。”一句話點明哲學(xué)的終極問題:我是誰?我從哪里來?我要到哪里去?縱觀三藏的心路歷程可知,他從來就知道自己是誰,不管取經(jīng)路途多么艱辛困苦,他總是初心不改,志在其中。

在學(xué)習(xí)新東西的時候,也會經(jīng)常會有這些問題。如XXX是什么,怎么定義的。怎么生成XXX?XXX有什么用?能把這三個問題回答清楚,新東西基本就掌握了。

本文主要來回答PCurve的這三個問題,即PCurve是什么?PCurve從哪里來?PCurve有什么用?幫助大家深入理解這個BRep表示法中的核心概念。

2 PCurve是什么

我們找到OpenCASCADE中的注釋對PCurve的描述:A 2D curve associated to the curve on surface in the parametric space of the surface。字面意思是曲面上的一條三維曲線對應(yīng)到曲面的參數(shù)空間中的一條二維曲線,即PCurve是Parametric Space Curve的縮寫。也提醒我們BRep中幾何的表達(dá)采用的是參數(shù)方程的形式,對于曲線是一個參數(shù)的方程C(u),而對于曲面是兩個參數(shù)的方程S(u, v)。曲面的參數(shù)空間就是曲面參數(shù)方程的定義域,是二維空間。給定曲面參數(shù)空間一條線(即PCurve)根據(jù)曲面的參數(shù)方程總是能映射到得到一條模型空間的三維曲線或退化的曲線。

3 PCurve從哪里來

關(guān)于PCurve有兩個要素:一是Curve,一是Surface。在生成Face的代碼里,最關(guān)鍵的就是設(shè)置PCurve。從生成Face的類BRepLib_MakeFace中,我們可以看到,對于已經(jīng)有參數(shù)范圍的曲面,其PCurve就是參數(shù)范圍在參數(shù)空間的一個矩形,這里是手動創(chuàng)建的。

那更一般的情況怎么辦呢?如已知曲面及曲面上的一條曲線,怎么得到PCurve?在OpenCASCADE中提供了一個靜態(tài)函數(shù)來計算:

最終是調(diào)用類ProjLib_ProjectedCurve來計算的:

前面還介紹過了曲線向曲面投影的算法原理,知道是通過計算曲線上的點與曲面法向上的交點來求出曲面上的擬合曲線,這里的擬合曲線仍然是模型空間的三維曲線。那么怎么計算出曲線在曲面參數(shù)空間的PCurve呢?我們來看看類ProjLib_ComputeApprox,從中找出答案。


//=======================================================================
//function : Value
//purpose  : 
//=======================================================================
static gp_Pnt2d Function_Value(const Standard_Real U,
       const Handle(Adaptor3d_Curve)&   myCurve,
       const Handle(Adaptor3d_Surface)& mySurface,
       const Standard_Real U1,
       const Standard_Real U2, 
       const Standard_Real V1,
       const Standard_Real V2,
       const Standard_Boolean UCouture,
       const Standard_Boolean VCouture ) 
{
  Standard_Real S = 0., T = 0.;
  gp_Pnt P3d = myCurve->Value(U);
  GeomAbs_SurfaceType SType = mySurface->GetType();
  switch ( SType ) {
  case GeomAbs_Plane:
    {
      gp_Pln Plane = mySurface->Plane();
      ElSLib::Parameters( Plane, P3d, S, T);
      break;
    }
  case GeomAbs_Cylinder:
    {
      gp_Cylinder Cylinder = mySurface->Cylinder();
      ElSLib::Parameters( Cylinder, P3d, S, T);
      break;
    }
  case GeomAbs_Cone:
    {
      gp_Cone Cone = mySurface->Cone();
      ElSLib::Parameters( Cone, P3d, S, T);
      break;
    }
  case GeomAbs_Sphere:
    {
      gp_Sphere Sphere = mySurface->Sphere();
      ElSLib::Parameters(Sphere, P3d, S, T);
      break;
    }
  case GeomAbs_Torus:
    {
      gp_Torus Torus = mySurface->Torus();
      ElSLib::Parameters( Torus, P3d, S, T);
      break;
    }
  default:
    throw Standard_NoSuchObject("ProjLib_ComputeApprox::Value");
  }
  if ( UCouture) {
    if(S < U1 || S > U2)
    {
        S = ElCLib::InPeriod(S, U1, U2);
    }
  }
  if ( VCouture) {
    if(SType == GeomAbs_Sphere) {
      if ( Abs( S - U1 ) > M_PI ) {
      T = M_PI - T;
      S = M_PI + S;
      }
      if(S > U1 || S < U2)
        S = ElCLib::InPeriod(S, U1, U2);
    }
    if(T < V1 || T > V2)
      T = ElCLib::InPeriod(T, V1, V2);
  }
  return gp_Pnt2d(S, T);
}

上面是擬合PCurve的擬合函數(shù),從擬合函數(shù)的定義可知,對于簡單曲面上的曲線,給定參數(shù)U可以計算出曲線的點P3d,根據(jù)P3d計算出曲面的參數(shù)空間的參數(shù)S, T,最后將參數(shù)空間的點返回。即將這些參數(shù)空間的二維點進行擬合得到就是PCurve。

原來百思不得其解的問題終于有了頭緒,可以看出這個方法還是很巧妙的。這里就回答了PCurve從哪來的問題:若你知道PCurve,可以自己手動設(shè)置;若對于任意曲面上曲線的PCurve,可以通過Project得到。從中可以看出擬合功能的重要性。

4 PCurve有什么用

從PCurve的定義上可以看出,通過PCurve相當(dāng)于建立了Edge與Face的聯(lián)系。從目前的理解來看PCurve主要還是用在Mesh,將Face網(wǎng)格化。因為網(wǎng)格化目前的算法主要還是在曲面的參數(shù)空間進行三角剖分:

5 Conclusion

綜上所述,在理解PCurve是什么后,大家可以自己思考下,如果讓你實現(xiàn)生成PCurve的算法,你會怎么做呢?PCurve除了用于Mesh,還有哪些應(yīng)用呢?期待大家的發(fā)掘。
理解PCurve后,相信OpenCASCADE的大部分源碼大家已能看懂,為大家鉆研源碼打下基礎(chǔ)。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美激情视频在线观看一区二区三区| 农夫在线精品视频免费观看| 久久久久久一区二区三区| 一本久道综合久久精品| 日韩一区二区精品视频| 99re6这里只有精品| 国内成人精品一区| 欧美激情欧美狂野欧美精品| 亚洲一级在线观看| 亚洲欧美在线高清| 久久久一区二区| 欧美激情亚洲国产| 一区二区三区免费看| 性欧美1819性猛交| 男人插女人欧美| 国产精品露脸自拍| 一区二区三区在线免费视频| 亚洲麻豆一区| 香蕉久久夜色精品国产| 欧美freesex8一10精品| 一区二区三区高清在线| 久久激情五月丁香伊人| 欧美精品1区2区3区| 国产一区二区三区高清播放| 99riav国产精品| 久久久天天操| 日韩视频在线免费观看| 欧美一区二区三区在线观看视频| 美日韩免费视频| 国产日韩欧美成人| 一本久久a久久精品亚洲| 欧美在线一二三| 亚洲精品一区中文| 久久久久久自在自线| 国产精品99免费看 | 一区二区三区欧美激情| 欧美在线免费播放| 欧美调教视频| 亚洲黄色高清| 麻豆精品视频在线观看| 亚洲欧美卡通另类91av| 欧美日韩亚洲激情| 亚洲精品美女久久7777777| 久久精品一区二区三区四区| 正在播放日韩| 欧美日韩在线播放三区四区| 亚洲国产日韩一区二区| 久久综合伊人77777麻豆| 亚洲欧美日韩中文在线制服| 国产精品av一区二区| 亚洲精品一二| 亚洲国产成人久久综合一区| 先锋影音网一区二区| 国产精品午夜春色av| 亚洲女女做受ⅹxx高潮| 99国产精品| 欧美三级欧美一级| 亚洲午夜视频| 日韩一级网站| 欧美福利视频在线观看| 久久99在线观看| 国产欧美日韩视频一区二区三区 | 一色屋精品视频免费看| 久久国产精品亚洲77777| 亚洲一本视频| 国产精品丝袜久久久久久app| 亚洲影音一区| 亚洲一区二区三区色| 国产精品热久久久久夜色精品三区| 一区二区三区**美女毛片| aaa亚洲精品一二三区| 欧美日韩中文| 欧美一区二区三区在线观看视频| 亚洲一区久久久| 国产亚洲人成a一在线v站| 久久人体大胆视频| 另类人畜视频在线| 一区二区高清在线观看| 亚洲一区二区在| 国产亚洲精品资源在线26u| 久久久在线视频| 欧美fxxxxxx另类| 亚洲深夜福利| 香蕉精品999视频一区二区| 在线观看成人av| 亚洲精品极品| 国产亚洲精品久久久久久| 欧美成人精品不卡视频在线观看 | 黄网站免费久久| 亚洲大胆视频| 欧美午夜一区二区三区免费大片| 欧美一区二区在线免费观看| 久久久久久久91| 在线视频亚洲一区| 欧美在线播放一区二区| 亚洲精品一区在线观看| 亚洲欧美在线免费观看| 亚洲国产成人porn| 亚洲天堂免费在线观看视频| 在线观看亚洲a| 亚洲天堂男人| 亚洲人成网在线播放| 亚洲在线成人| 日韩一级免费| 久久视频国产精品免费视频在线| 一本色道久久88精品综合| 久久国产精品久久久久久电车| 亚洲精品久久久久久久久久久| 亚洲男人天堂2024| 99re热这里只有精品视频 | 久久精品女人| 亚洲女人天堂av| 欧美亚洲免费电影| 久久这里只有| 欧美久久久久| 久久视频在线看| 国产精品久久久久国产a级| 欧美激情精品久久久久久| 国产区日韩欧美| av成人动漫| 日韩视频在线你懂得| 久久久亚洲高清| 久久久噜噜噜久久| 国产日产欧美a一级在线| 在线视频精品一区| 夜夜嗨av一区二区三区免费区| 久久综合给合| 久久综合九色| 国产亚洲欧美一区| 亚洲欧美在线另类| 亚洲欧美www| 欧美视频一区二区| 亚洲精品一区在线| 99这里只有久久精品视频| 欧美jjzz| 欧美国产精品人人做人人爱| 精品999成人| 久久精品女人天堂| 噜噜噜久久亚洲精品国产品小说| 国产日韩欧美一区在线| 午夜在线精品| 久久精品五月| 国产在线精品成人一区二区三区 | 男人的天堂亚洲| 亚洲国产成人久久综合| 亚洲精品国久久99热| 欧美激情第8页| 亚洲肉体裸体xxxx137| 亚洲图片激情小说| 欧美午夜宅男影院| 亚洲一区二区在线免费观看视频| 性色av一区二区三区在线观看| 国产日韩精品一区二区| 久久久女女女女999久久| 亚洲电影观看| 亚洲视频电影在线| 国产乱码精品一区二区三区忘忧草| 亚洲欧美另类在线| 久久中文久久字幕| 亚洲三级视频| 国产精品qvod| 欧美在线视频a| 亚洲国产精品久久久久秋霞影院| 亚洲精品在线三区| 国产精品欧美日韩一区| 欧美在线视频导航| 亚洲精品国久久99热| 欧美在线不卡视频| 亚洲人成人99网站| 国产精品夜色7777狼人| 免费久久精品视频| 亚洲视频免费| 欧美国产三级| 午夜欧美理论片| 亚洲韩国青草视频| 国产乱理伦片在线观看夜一区| 免费人成网站在线观看欧美高清| 在线中文字幕日韩| 欧美 日韩 国产一区二区在线视频 | 亚洲精品一区二区三区樱花| 亚洲专区一区| 在线播放日韩| 国产精品国产三级国产专播品爱网| 欧美怡红院视频| 日韩亚洲视频在线| 欧美mv日韩mv国产网站app| 亚洲欧美精品在线观看| 91久久久一线二线三线品牌| 国产精品午夜久久| 欧美日韩国产色站一区二区三区| 久久爱另类一区二区小说| 一区二区欧美亚洲| 亚洲国产成人91精品| 久久五月婷婷丁香社区| 午夜精品久久久久久久久 | 亚洲精品精选| 黑人巨大精品欧美一区二区小视频| 欧美精品免费视频| 玖玖综合伊人| 久久激情视频免费观看|