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

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>
            欧美一区二区在线看| 亚洲欧美日韩久久精品| 午夜免费久久久久| 亚洲精品一区二区三区婷婷月| 久久天天综合| 伊人色综合久久天天| 欧美成人午夜激情在线| 免费成人网www| 一区二区三区导航| 亚洲午夜视频在线观看| 国产美女精品视频| 久久免费高清| 老司机午夜精品视频在线观看| 亚洲国产成人在线播放| 亚洲福利视频专区| 欧美日韩成人综合| 亚洲一区二区三区四区五区午夜| 亚洲午夜伦理| 狠狠色狠狠色综合日日小说| 欧美成人在线免费视频| 欧美日韩亚洲综合在线| 欧美在线欧美在线| 欧美二区不卡| 亚洲欧美日韩中文播放| 久久国产夜色精品鲁鲁99| 亚洲福利视频专区| 一本色道久久综合精品竹菊| 国产综合自拍| 日韩视频在线播放| 狠狠色综合网| 亚洲人成在线影院| 国产一区二区精品在线观看| 亚洲黄色天堂| 国产一区二区三区四区五区美女| 91久久在线| 国产一区二区三区四区| 亚洲美女中出| 狠狠色丁香婷婷综合| 一区二区91| 91久久线看在观草草青青| 亚洲一区二区三区在线观看视频 | 欧美国产欧美综合| 国产精品v欧美精品∨日韩| 玖玖在线精品| 国产精品久久久久久久久久ktv| 欧美99久久| 国产欧美日韩亚洲一区二区三区| 亚洲欧洲日本国产| 激情视频亚洲| 欧美在线观看一二区| 亚洲一级二级| 欧美精品福利视频| 美女啪啪无遮挡免费久久网站| 国产精品欧美日韩一区二区| 亚洲美女视频在线观看| 91久久久国产精品| 久久免费黄色| 免费欧美在线视频| 国产一区二区三区黄视频| 中文日韩电影网站| 亚洲夜间福利| 欧美日韩亚洲一区| 亚洲六月丁香色婷婷综合久久| 亚洲国产小视频| 久久午夜色播影院免费高清| 久久久久一区二区三区| 国产日韩亚洲| 欧美一区综合| 蜜桃av综合| 91久久精品美女高潮| 免费成人性网站| 亚洲国产综合在线| 一本色道久久88精品综合| 欧美激情国产日韩精品一区18| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲激情电影在线| 亚洲美女电影在线| 欧美精品一区二| 亚洲精品视频一区二区三区| 一本色道久久综合| 欧美体内she精视频| 一本一道久久综合狠狠老精东影业 | 韩国一区电影| 久久久亚洲精品一区二区三区| 毛片一区二区| 亚洲人成在线观看| 欧美日韩在线一二三| 中文精品在线| 久久精品理论片| 亚洲国产精品第一区二区三区| 蜜臀99久久精品久久久久久软件| 亚洲福利视频在线| 亚洲一区二区精品| 国产又爽又黄的激情精品视频| 久久国产手机看片| 亚洲高清精品中出| 亚洲小说春色综合另类电影| 国产美女一区| 老司机精品视频一区二区三区| 亚洲人成人77777线观看| 亚洲欧美国内爽妇网| 狠狠色狠狠色综合日日五| 欧美成人午夜77777| 亚洲视频香蕉人妖| 另类春色校园亚洲| 亚洲巨乳在线| 国产三级精品在线不卡| 欧美高清在线视频| 性欧美大战久久久久久久久| 亚洲黄色av| 久久久久久久久综合| 99在线热播精品免费99热| 国产伦理一区| 欧美日韩国产专区| 久久久久综合| 亚洲无限av看| 亚洲黄色天堂| 男女精品网站| 欧美一区成人| 一本色道久久综合亚洲精品小说| 好吊视频一区二区三区四区| 欧美日韩免费高清| 久久久久综合| 欧美淫片网站| 亚洲一区二区精品在线| 亚洲国产日韩在线| 久久免费少妇高潮久久精品99| 国产精品99久久99久久久二8| 亚洲二区在线| 国产一区二三区| 国产精品视频yy9099| 欧美日韩精品免费观看| 毛片av中文字幕一区二区| 欧美资源在线观看| 性欧美xxxx大乳国产app| 亚洲无线观看| 一区二区成人精品| 亚洲免费观看| 亚洲国产另类久久精品| 欧美黑人多人双交| 蜜臀av在线播放一区二区三区| 久久99在线观看| 欧美一区二区三区精品 | 国产女精品视频网站免费| 欧美日韩国产123| 欧美国产精品劲爆| 欧美成人a∨高清免费观看| 久久久久在线观看| 久久久91精品国产| 久久精品国产69国产精品亚洲| 欧美一区精品| 久久性天堂网| 欧美/亚洲一区| 欧美久久久久| 欧美午夜大胆人体| 国产美女高潮久久白浆| 国产真实久久| 国产主播一区二区| 亚洲电影激情视频网站| 91久久夜色精品国产网站| 亚洲精品免费观看| 亚洲一区二区免费在线| 亚洲综合欧美日韩| 久久精品国产2020观看福利| 久久久久一区二区三区| 久久综合国产精品台湾中文娱乐网| 午夜激情久久久| 久久日韩精品| 欧美另类videos死尸| 国产精品私房写真福利视频| 国产欧美日韩一区二区三区在线观看| 国产亚洲毛片| 亚洲国产精品成人一区二区| 99热精品在线| 欧美亚洲日本网站| 欧美 日韩 国产一区二区在线视频| 麻豆精品传媒视频| 亚洲免费福利视频| 欧美资源在线观看| 欧美福利视频一区| 国产精品私拍pans大尺度在线| 影音先锋日韩有码| 亚洲一品av免费观看| 久久亚洲春色中文字幕| 亚洲精品在线看| 久久成人这里只有精品| 欧美伦理在线观看| 国际精品欧美精品| 亚洲婷婷综合色高清在线 | 亚洲人精品午夜在线观看| 亚洲一区二区三区影院| 美女成人午夜| 亚洲一区激情| 欧美成人一区二区三区| 国产欧美精品国产国产专区| 亚洲精品一二三区| 麻豆成人在线观看| 亚洲曰本av电影| 欧美精品一区二区三区久久久竹菊 | 亚洲欧美综合v|