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

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 Make Primitives-Sphere

Posted on 2014-11-22 17:52 eryar 閱讀(2619) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE Make Primitives-Sphere

eryar@163.com

Abstract. The sphere is the simplest topology shape of the BRep structure. But there are several import concept of the sphere edges, such as degenerated edge and seam edge. So construct a sphere by code, you will learn these.

Key Words. OpenCASCADE, Sphere, BRep

1. Introduction

球體(sphere)是邊界表示法(BRep)中最簡(jiǎn)單的一個(gè)拓樸形狀了,因?yàn)樗苯佑汕蛎鎭?lái)構(gòu)造。但是其中包含了一些重要的概念,如退化邊(degenerated edge)、銜接邊(seam edge)。由代碼手工來(lái)構(gòu)造一個(gè)球體,可以學(xué)習(xí)這些概念。首先要知道OpenCASCADE中球面的參數(shù)方程:

wps_clip_image-28720

在Draw Test Harness中顯示如下圖所示:

wps_clip_image-6776

Figure 1.1 Sphere in Draw Test Harness

由球面的參數(shù)方程可知,當(dāng)參數(shù)u=0或2PI時(shí),對(duì)應(yīng)球面上的點(diǎn)就是上圖所示的綠線,實(shí)際上是由兩個(gè)線重合在一起了。

當(dāng)參數(shù)v=-PI/2或PI/2時(shí),對(duì)應(yīng)球面上兩個(gè)極點(diǎn),因?yàn)榍蛎娴膬蓚€(gè)極點(diǎn)處法向?yàn)榱悖蛎嬖趦蓚€(gè)極點(diǎn)處的法向是存在的,所以這樣的點(diǎn)即為邊退化而成,稱為退化邊。

三維曲線圓的參數(shù)方程如下所示:

wps_clip_image-15160

通過(guò)代碼從點(diǎn)開(kāi)始來(lái)構(gòu)造一個(gè)球體,從而來(lái)加深理解OpenCASCADE的BRep表示法。

2.Make the Sphere

2.1 Make Vertex

從頂點(diǎn)開(kāi)始來(lái)創(chuàng)建球體。因?yàn)榍蝮w就是一個(gè)球面,為了得到Face的Wire,需要構(gòu)造一個(gè)閉合的區(qū)域。這里選擇兩個(gè)極點(diǎn)作為球體的頂點(diǎn)。創(chuàng)建球體的兩個(gè)極點(diǎn),程序代碼如下所示:

// make the north and south poles.
aBuilder.MakeVertex(aNorthPole, aPoints[0], Precision::Confusion());
aBuilder.MakeVertex(aSouthPole, aPoints[
1], Precision::Confusion());

2.2 Make Edge

為了得到閉合的Wire,需要四條邊,其中在球面兩個(gè)極點(diǎn)處的兩條退化邊,還有連接兩個(gè)極點(diǎn)的重合的銜接邊。創(chuàng)建邊的代碼如下所示:

// make the seam edge with the 3D geometry curve.
aBuilder.MakeEdge(aSeamEdge, new Geom_Circle(aCircle), Precision::Confusion());

// there is no 3D geometry curve in the degenerated edge.
aBuilder.MakeEdge(aNorthEdge);
aBuilder.Degenerated(aNorthEdge, Standard_True);

// there is no 3D geometry curve in the degenerated edge.
aBuilder.MakeEdge(aSouthEdge);
aBuilder.Degenerated(aSouthEdge, Standard_True);

// set the vertex info of the seam edges.
{
    TopoDS_Vertex V1 
= aNorthPole;
    TopoDS_Vertex V2 
= aSouthPole;

    V1.Reverse();

    aBuilder.Add(aSeamEdge, V1);
    aBuilder.Add(aSeamEdge, V2);

    aBuilder.UpdateVertex(V1, ElCLib::Parameter(aCircle, aPoints[
0]), aSeamEdge, Precision::Confusion());
        
  aBuilder.UpdateVertex(V2, ElCLib::Parameter(aCircle, aPoints[
1]), aSeamEdge, Precision::Confusion());

    BRepTools::Update(aSeamEdge);
}

// set the vertex info of the north degenerated edge.
{
    TopoDS_Vertex V1 
= aNorthPole;
    TopoDS_Vertex V2 
= aNorthPole;

    V2.Reverse();

    aBuilder.Add(aNorthEdge, V1);
    aBuilder.Add(aNorthEdge, V2);

    BRepTools::Update(aNorthEdge);
}

// set the vertex info of the south degenerated edge.
{
    TopoDS_Vertex V1 
= aSouthPole;
    TopoDS_Vertex V2 
= aSouthPole;

    V2.Reverse();

    aBuilder.Add(aSouthEdge, V1);
    aBuilder.Add(aSouthEdge, V2);

    BRepTools::Update(aSouthEdge);
}

由上述代碼可知,銜接邊中包含了幾何信息:三維曲線圓;退化邊中未包含幾何信息,但將其退化邊屬性設(shè)置為true。之后將邊上頂點(diǎn)在曲線上對(duì)應(yīng)的參數(shù)值設(shè)置到邊中,退化邊不需要設(shè)置。

2.3 Make Wire

創(chuàng)建Wire需要確保組成Wire的邊要閉合。程序代碼如下所示:


// make wire.
aBuilder.MakeWire(aWire);

// add edges to the wire.
{
    TopoDS_Edge E1 
= aNorthEdge;
    TopoDS_Edge E2 
= aSeamEdge;
    TopoDS_Edge E3 
= aSouthEdge;
    TopoDS_Edge E4 
= aSeamEdge;

    E1.Reverse();
    E4.Reverse();

    aBuilder.Add(aWire, E1);
    aBuilder.Add(aWire, E2);
    aBuilder.Add(aWire, E3);
    aBuilder.Add(aWire, E4);

    BRepTools::Update(aWire);
}

2.4 Make Face

創(chuàng)建面后,將邊與面關(guān)聯(lián)起來(lái)至關(guān)重要,即PCurve的設(shè)置。程序代碼如下所示:


// make face.
aBuilder.MakeFace(aFace, new Geom_SphericalSurface(aSphere), Precision::Confusion());

// set the pcurve info between edge and face.
{
    aBuilder.Range(aNorthEdge, 
0.02 * M_PI);
    aBuilder.UpdateEdge(aNorthEdge, 
new Geom2d_Line(aLines[0]), aFace, Precision::Confusion());

    aBuilder.Range(aSeamEdge, 
1.5 * M_PI, 2.5 * M_PI);
    aBuilder.UpdateEdge(aSeamEdge, 
new Geom2d_Line(aLines[1]), new Geom2d_Line(aLines[2]), aFace, Precision::Confusion());
    aBuilder.Continuity(aSeamEdge, aFace, aFace, GeomAbs_CN);
        
    aBuilder.Range(aSouthEdge, 
0.02 * M_PI);
    aBuilder.UpdateEdge(aSouthEdge, 
new Geom2d_Line(aLines[3]), aFace, Precision::Confusion());

    BRepTools::Update(aFace);
}

由上述代碼可知,球面中包含了一個(gè)幾何的曲面。創(chuàng)建球面后,將相關(guān)的邊與面關(guān)聯(lián)起來(lái)。參數(shù)曲線PCurve的范圍Range在球面的參數(shù)空間中應(yīng)該閉合。其中兩個(gè)退化邊的范圍都是從0到2PI,而銜接邊的范圍設(shè)置不當(dāng),會(huì)產(chǎn)生不正確的結(jié)果,如下圖所示:

wps_clip_image-29088

Figure 2.4.1 Seam Edge Range[-PI/2, PI/2]

線框模式顯示正常,但是不能切換到渲染模式,即不能顯示出面。結(jié)合其PCurve的范圍可以發(fā)現(xiàn)組成Wire的邊的PCurve不能閉合。

當(dāng)Seam邊的三維曲線方向不當(dāng)時(shí),會(huì)不與球面的Seam重合,如下圖所示:

wps_clip_image-24089

Figure 2.4.2 Circle in Seam Edge Range [-PI/2, PI/2]

wps_clip_image-7311

Figure 2.4.3 Wrong Seam Edge Geometry Curve

wps_clip_image-31932

Figure 2.4.4 Wrong Seam Edge Geometry Curve

3. Test the Sphere

正確生成球體后導(dǎo)出為brep文件即可以在Draw Test Harness中來(lái)顯示及進(jìn)行一些操作來(lái)驗(yàn)證結(jié)果的正確性。在Draw Test Harness中打開(kāi)brep文件并顯示球體如下圖所示:

wps_clip_image-21495

Figure 3.1 Show the Sphere from file in Draw Test Harness

將其與一個(gè)長(zhǎng)方體進(jìn)行布爾運(yùn)算,效果如下圖所示:

wps_clip_image-18355

Figure 3.2 Spher and a Box

wps_clip_image-7716

Figure 3.3 Sphere cut a Box

由上圖可知,球體與長(zhǎng)方體布爾運(yùn)算結(jié)果正確。

4. Conclusion

通過(guò)生成一個(gè)球體,示例了特殊邊的構(gòu)造,如退化邊和銜接邊。需要注意的事項(xiàng)還是組成Wire的所有邊中的PCurve必須在面的參數(shù)空間中閉合。由PCurve可知,球面對(duì)應(yīng)的參數(shù)空間不是幾何曲面的范圍,而是在v方向上偏移了2PI。

5. References

1. OpenCascade Primitives BRep - Sphere,  

http://www.shnenglu.com/eryar/archive/2014/03/22/206279.html

2. PCurve - Curve on Surface, 

http://www.shnenglu.com/eryar/archive/2014/03/15/206180.html

3. Topology and Geometry in OpenCascade-Face, 

http://www.shnenglu.com/eryar/archive/2013/09/12/203199.html

 

PDF Version and Source code: OpenCASCADE Make Primitives - Sphere

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜欧美大片免费观看| 亚洲精品中文字幕有码专区| 性久久久久久久久| 欧美视频中文字幕在线| 亚洲精品视频一区| 亚洲国产成人tv| 欧美人成在线| 亚洲欧美日韩另类精品一区二区三区 | 日韩一区二区免费高清| 亚洲国产精品一区在线观看不卡| 欧美成人在线免费观看| 一级日韩一区在线观看| 亚洲一区在线看| 精品二区视频| 亚洲精品婷婷| 国产亚洲欧美日韩一区二区| 一区二区三区黄色| 欧美在线地址| 国产亚洲毛片| 亚洲国产一区二区三区a毛片 | 欧美成人精品在线| 欧美日韩成人精品| 欧美尤物一区| 欧美激情女人20p| 午夜亚洲一区| 免费不卡在线观看| 亚洲女女做受ⅹxx高潮| 久久蜜臀精品av| 亚洲一区3d动漫同人无遮挡| 欧美综合77777色婷婷| 亚洲精品日韩久久| 久久国产精品久久久久久| 99国产精品久久久久久久久久| 亚洲综合99| 一区二区91| 久久久久久久999精品视频| 亚洲视频在线观看网站| 久久精品伊人| 欧美伊人久久久久久久久影院 | 久久噜噜噜精品国产亚洲综合 | 亚洲电影在线观看| 这里只有精品视频在线| 亚洲国产成人精品久久| 午夜精品影院在线观看| 一区二区三区产品免费精品久久75| 欧美一区二区高清在线观看| 亚洲一级免费视频| 免费观看在线综合| 久久久91精品国产| 欧美三级资源在线| 亚洲黄色免费网站| 亚洲国产老妈| 久久久久久一区二区| 久久久噜噜噜久久人人看| 欧美视频二区36p| 亚洲欧洲在线观看| 亚洲国产精品精华液2区45| 久久国产一区二区三区| 欧美影院视频| 国产麻豆视频精品| 亚洲影院色在线观看免费| 亚洲一区二区四区| 欧美日韩精品免费| 99精品视频免费观看| 日韩视频在线一区二区| 欧美不卡视频一区| 亚洲黄页一区| 正在播放欧美视频| 欧美日韩精品综合| 一二三区精品| 午夜日韩av| 国产亚洲二区| 久久精品女人| 欧美mv日韩mv亚洲| 亚洲精品影院| 欧美日韩在线播放三区四区| 夜夜嗨av一区二区三区网页| 亚洲欧美国产另类| 欧美日韩免费观看一区=区三区| 欧美成人按摩| 最新亚洲一区| 亚洲精选一区| 欧美日韩色一区| 亚洲无玛一区| 久久精品视频免费播放| 国模 一区 二区 三区| 久久久综合精品| 91久久极品少妇xxxxⅹ软件| 亚洲一区自拍| 国产一区免费视频| 欧美成人小视频| 夜夜狂射影院欧美极品| 欧美一区二区三区四区在线观看地址| 国产欧美亚洲精品| 老色鬼精品视频在线观看播放| 亚洲经典自拍| 久久精品在线免费观看| 亚洲剧情一区二区| 国产精品视屏| 欧美成人一品| 国产精品婷婷| 香蕉久久久久久久av网站| 亚洲欧美精品在线| 亚洲电影网站| 国产女主播在线一区二区| 噜噜噜久久亚洲精品国产品小说| 亚洲免费av电影| 麻豆免费精品视频| 亚洲欧美一区二区三区极速播放 | 久久福利影视| 最新日韩av| 另类综合日韩欧美亚洲| 亚洲愉拍自拍另类高清精品| 精品成人在线视频| 国产精品视频网站| 欧美精品色一区二区三区| 欧美一区二区视频在线| 亚洲毛片在线免费观看| 猛男gaygay欧美视频| 亚洲欧美国产日韩天堂区| 亚洲人精品午夜在线观看| 国产欧美精品在线| 欧美日韩一级大片网址| 免费在线欧美视频| 久久久久国产精品人| 亚洲影院色无极综合| 日韩视频一区| 亚洲精品欧美| 久久男女视频| 欧美伊人影院| 亚洲自拍偷拍麻豆| 一区二区三区视频在线播放| 亚洲片在线资源| 在线观看日韩av| 在线国产精品播放| 国产综合色在线| 国产情人综合久久777777| 国产精品另类一区| 欧美亚男人的天堂| 欧美深夜福利| 欧美午夜无遮挡| 欧美三级日本三级少妇99| 欧美精品18+| 欧美日本亚洲韩国国产| 欧美日韩成人激情| 欧美日韩激情网| 欧美午夜精品理论片a级按摩 | 久久精品欧洲| 久久久99精品免费观看不卡| 久久精品日产第一区二区| 欧美在线视频免费| 久久精品91| 免费观看亚洲视频大全| 欧美激情第六页| 欧美日韩www| 国产精品久久久久999| 国产精品夜夜夜| 韩国精品主播一区二区在线观看| 黑丝一区二区三区| 最新国产精品拍自在线播放| 在线成人激情黄色| 日韩亚洲精品在线| 午夜精品久久99蜜桃的功能介绍| 久久福利毛片| 美女主播精品视频一二三四| 亚洲国产午夜| 中日韩美女免费视频网站在线观看 | 激情自拍一区| 亚洲国产日韩精品| 亚洲图片欧洲图片av| 久久久精品一区| 亚洲国产精品久久| 亚洲特色特黄| 久久综合九色综合欧美狠狠| 欧美日韩国产三级| 国产伪娘ts一区 | 欧美日韩亚洲一区二区三区四区 | 欧美视频日韩视频在线观看| 国产欧美日韩视频| 91久久精品久久国产性色也91 | 国内精品写真在线观看| 亚洲九九精品| 久久国产一区二区| 亚洲国产日韩在线一区模特| 亚洲在线一区二区| 欧美成人久久| 国产亚洲欧美一级| 国产精品99久久久久久久久| 久久久久九九九| 日韩一区二区电影网| 狼狼综合久久久久综合网 | 久久天堂国产精品| 国产精品久久久久久户外露出| **性色生活片久久毛片| 亚洲欧美日韩一区二区在线| 亚洲福利电影| 久久国产精品99精品国产| 欧美日韩理论| 亚洲精品少妇| 农村妇女精品|