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

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://m.shnenglu.com/eryar/archive/2014/03/22/206279.html

2. PCurve - Curve on Surface, 

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

3. Topology and Geometry in OpenCascade-Face, 

http://m.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>
            欧美激情在线狂野欧美精品| 欧美精品一区三区在线观看| 久久成人久久爱| 欧美人在线观看| 91久久精品国产91性色| 久久天堂国产精品| 午夜精品www| 国产精品亚发布| 亚洲伊人一本大道中文字幕| 亚洲精品日韩一| 欧美日韩伦理在线| 在线视频中文亚洲| 99re热精品| 欧美性视频网站| 亚洲一区视频在线观看视频| 妖精成人www高清在线观看| 欧美日韩精品伦理作品在线免费观看 | 午夜精品久久久久久99热软件| 亚洲美女免费精品视频在线观看| 欧美激情综合亚洲一二区| 亚洲伦理中文字幕| 日韩视频二区| 国产精品免费网站在线观看| 香蕉久久一区二区不卡无毒影院| 亚洲影音一区| 国产亚洲精品7777| 欧美成人午夜免费视在线看片| 牛人盗摄一区二区三区视频| 一二美女精品欧洲| 亚洲欧美日韩精品一区二区| 国产在线乱码一区二区三区| 免费日本视频一区| 欧美激情在线| 欧美一区二区三区免费在线看| 亚洲女人天堂av| 亚洲欧美日本国产有色| 国内自拍一区| 亚洲人午夜精品| 欧美午夜精品久久久久久浪潮 | 麻豆国产va免费精品高清在线| 久久一区二区三区国产精品| 夜夜躁日日躁狠狠久久88av| 亚洲免费视频中文字幕| 激情久久婷婷| 亚洲日本免费| 国产亚洲精品资源在线26u| 欧美国产日本在线| 国产精品日韩欧美综合| 欧美高清自拍一区| 国产麻豆9l精品三级站| 亚洲高清一区二区三区| 国产精品日本一区二区| 亚洲第一黄色| 国产美女精品在线| 亚洲精品国产视频| 国产在线精品自拍| 一本色道**综合亚洲精品蜜桃冫| 黄色小说综合网站| 亚洲一区久久久| 99re成人精品视频| 久久av红桃一区二区小说| 91久久精品国产91性色tv| 亚洲永久免费精品| 一区二区三区蜜桃网| 久久综合久久久久88| 羞羞视频在线观看欧美| 欧美激情一级片一区二区| 久久亚洲欧美| 国产精品综合av一区二区国产馆| 亚洲精品国产精品乱码不99按摩| 韩日精品中文字幕| 亚洲女人天堂av| 宅男噜噜噜66国产日韩在线观看| 另类综合日韩欧美亚洲| 久久久久国产精品www| 国产精品高潮呻吟久久av无限| 亚洲黄色成人| 在线观看日韩av电影| 欧美一级在线亚洲天堂| 午夜视频一区| 国产精品日韩高清| 亚洲一区二区高清视频| 亚洲香蕉网站| 国产精品成人av性教育| 日韩亚洲国产欧美| 99这里只有精品| 欧美日韩国产小视频| 亚洲精品日韩激情在线电影| 亚洲看片免费| 欧美日本免费| 99视频精品全部免费在线| 亚洲图片欧美日产| 国产精品国产a| 亚洲一区二区成人在线观看| 午夜精品久久久久久久久久久久 | 国产主播精品在线| 美女久久一区| 伊人久久大香线蕉av超碰演员| 久久激情综合网| 久久综合国产精品| 亚洲国产另类久久精品| 免费人成精品欧美精品| 欧美激情亚洲国产| 亚洲美女免费视频| 欧美日韩在线免费观看| 亚洲午夜精品一区二区三区他趣| 欧美亚洲一级| 影音先锋亚洲视频| 欧美r片在线| 在线视频你懂得一区| 欧美中文字幕久久| 在线观看欧美亚洲| 欧美日韩三级电影在线| 亚洲欧美日韩精品| 欧美成人午夜激情| 一区二区高清在线观看| 国产精品免费网站| 久久久av网站| 亚洲精品国产精品国自产观看| 亚洲淫片在线视频| 国内揄拍国内精品少妇国语| 欧美韩国在线| 亚洲欧美一区在线| 欧美成人午夜视频| 亚洲欧美日韩国产中文| 激情亚洲网站| 欧美网站在线| 久久这里只有精品视频首页| 99riav久久精品riav| 久久久九九九九| 亚洲人成免费| 国产精品亚洲综合天堂夜夜| 久久久精品日韩| 一区二区三区欧美视频| 久久综合给合久久狠狠狠97色69| 一区二区三区不卡视频在线观看| 国产日韩精品一区| 欧美精品一区在线播放| 欧美一区二区三区在线视频 | 另类天堂视频在线观看| 日韩网站在线| 狠狠色狠狠色综合系列| 欧美日韩国产色综合一二三四| 久久精品国产第一区二区三区| 亚洲精品久久久久久久久久久久久| 欧美一级理论片| 这里只有精品在线播放| 在线观看欧美激情| 国产色爱av资源综合区| 欧美日韩一区二区在线观看| 狂野欧美激情性xxxx欧美| 午夜综合激情| 亚洲在线观看免费视频| 亚洲精品乱码| 欧美激情亚洲一区| 蜜臀久久99精品久久久久久9| 欧美一区在线直播| 亚洲免费网址| 中国亚洲黄色| 日韩视频在线播放| 亚洲成人在线免费| 国内伊人久久久久久网站视频 | 国外成人性视频| 国产精品推荐精品| 亚洲一二三区在线观看| 亚洲日本电影在线| 亚洲国产精品久久久久婷婷884| 开心色5月久久精品| 久久久久女教师免费一区| 欧美在线视频不卡| 小黄鸭精品aⅴ导航网站入口| 亚洲伊人第一页| 亚洲尤物精选| 亚洲一区欧美激情| 午夜精品视频在线观看一区二区| 亚洲在线一区| 香蕉av福利精品导航| 午夜视频在线观看一区二区| 亚洲免费人成在线视频观看| 亚洲在线视频网站| 欧美一区二区精品| 欧美亚洲在线播放| 久久精品导航| 久久网站免费| 欧美韩日一区二区三区| 最近看过的日韩成人| 亚洲伦理自拍| 亚洲在线免费观看| 欧美在线观看日本一区| 久久久国产精品一区| 美女91精品| 欧美日韩亚洲网| 国产麻豆精品久久一二三| 国产中文一区| 亚洲激情视频网| 亚洲自拍另类| 免费成人av| 亚洲剧情一区二区| 亚洲一区中文字幕在线观看| 久久本道综合色狠狠五月|