OpenCascade BRep Format Description

Size: px
Start display at page:

Download "OpenCascade BRep Format Description"

Transcription

1 OpenCascade BRep Format Description 摘要 Abstract: 本文结合 OpenCascade 的 BRep 格式描述文档和源程序, 对 BRep 格式 进行分析, 详细说明 BRep 的数据组织形式 结合源程序, 可以对 OpenCascade 中 Modeling Data 模块中的模型数据结构进行理解 关键字 Key Words:OpenCascade, BRep Format, ModelingData 一 引言 Introduction OpenCascade 中的 BRep 格式主要用来存储 3D 模型, 也可用来存储由下列元素组成的 模型 : vertices, edges, wires, faces, shells, solids, compsolids, compounds, edge triangulations, face triangulations, polylines on triangulations, space location and orientation. 本格式的目的就是为了便于理解, 也使用了类似 BNF 的定义方式 以下章节都是按下 面的格式组织的 : 该部分的示例 ; 该部分的类 BNF 定义 ; 该部分的详细说明 ; 该部分的源程序片段 二 通用结构 Format Common Structure BRep 格式文件的读写采用了 ASCII 的编码方式, 该格式的数据都是文本形式存储 BRep 格式使用了下面的 BNF 术语 : 1) <\n>: 换行 ; 2) <_\n>: 3) <_>: 空格 ; 4) <flag>: 标志位 :0 和 1; 5) <int>: 整数, 范围 到 ; 6) <real>: 实数, 范围 X 到 X ; 7) <2D point>: 二维点, 两个实数 ; 8) <3D point>: 三维点, 三个实数 ; 9) <2D direction>: 二维方向矢量, 两个实数, 平方和为 1, 即为单位方向矢量 ; 10) <3D direction>: 三维方向矢量, 三个实数, 平方和为 1, 即为单位方向矢量 ; 11) <+> BRep 格式包含以下部分 : 1) <content type> 2) <version> 3) <locations>

2 4) <geometry> 5) <shapes> <content type> 部分 : <content type> 也可以有其它的值 <version> 部分 : 不同版本之间的区别将会在本文档中说明

3 三 <locations> 部分 Section <locations> 示例 : BNF 定义 : 详细说明 : <location data 1> 定义了 3X4 的矩阵 Q, 描述了三维空间的线性变换, 并满足如下约定 :

4 , / 2) 0,, 1) = = = = = Q Q d Q Q d Q d q q q q q q q q q Q q q q q q q q q q q q q Q T 矩阵 Q 是线性变换矩阵, 它可以通过矩阵乘法将一个点 (x, y, z) 变换成另外一点 (u, v, w): ( ) = = q z q y q x q q z q y q x q q z q y q x q z y x Q w v u T Q 也可能是以下基本变换矩阵的组合 : 1) 平移变换矩阵 : q q q 2) 绕任意轴旋转的变换矩阵, 轴的方向为 D(Dx, Dy, Dz), 旋转角度 ψ: cos ) cos (1 sin ) cos (1 sin ) cos (1 0 sin ) cos (1 cos ) cos (1 sin ) cos (1 0 sin ) cos (1 sin ) cos (1 cos ) cos ( ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ z x z y y z x x z y y z y x y z x z y x x D D D D D D D D D D D D D D D D D D D D D 3) 缩放变换矩阵 : s s s 4) 中心对称变换矩阵 :

5 ) 轴对称变换矩阵 : ) 平面对称变换矩阵 : <location data 2> 解释为组合变换的幂 <location data 2> 是整数对 li, pi 的序列 这个序列将被解释为 : L,, L p1 l 1 L p l Lli 是 <location record> 部分的变换矩阵 n n 读取 <locations> 部分的类为 TopTools_LocationSet, 程序代码如下所示 : //function : Read //purpose : void TopTools_LocationSet::Read(Standard_IStream& IS) mymap.clear(); char buffer[255]; Standard_Integer l1,p; IS >> buffer; if (strcmp(buffer,"locations")) cout << "Not a location table "<<endl; return;

6 Standard_Integer i, nbloc; IS >> nbloc; TopLoc_Location L; gp_trsf T; //OCC19559 Message_ProgressSentry PS(GetProgress(), "Locations", 0, nbloc, 1); for (i = 1; i <= nbloc&& PS.More(); i++, PS.Next()) if (!GetProgress().IsNull() ) GetProgress()->Show(); Standard_Integer typloc; IS >> typloc; if (typloc == 1) ReadTrsf(T,IS); L = T; else if (typloc == 2) L = TopLoc_Location(); IS >> l1; while (l1!= 0) IS >> p; TopLoc_Location L1 = mymap(l1); L = L1.Powered(p) *L; IS >> l1; if (!L.IsIdentity()) mymap.add(l); 虽然代码风格不好, 缩进 括号什么的都不工整, 看起来很吃力, 但是结合源程序, 对上面的详细说明的理解还是很有帮助的 其中变量 nbloc 是 <location record count> 的值, 成员变量 mymap 是 TopLoc_Location 的一个 map 当是 <location record 1> 时把 <location data 1> 都放到 TopLoc_Location 的 map 中 当是 <location record 2> 时将 li 的变换矩阵 TopLoc_Location 乘 pi 次方 <flag>0 表示 <location data 2> 的结束

7 四 <geometry> 部分 <geometry> 包含以下子部分 : 1.<2D curves> 2.<3D curves> 3.<3D polygons> 4.<polygons on triangulations> 5.<surfaces> 6.<triangulations> 读取 <geometry> 部分的类为 BRepTools_ShapeSet, 程序代码如下所示 : //function : ReadGeometry //purpose : void BRepTools_ShapeSet::ReadGeometry(Standard_IStream& IS) //OCC19559 mycurves2d.setprogress(getprogress()); mycurves.setprogress(getprogress()); mysurfaces.setprogress(getprogress()); if (!GetProgress().IsNull()) if( GetProgress()->UserBreak() ) return; GetProgress()->NewScope ( 15, "2D Curves" ); mycurves2d.read(is); if (!GetProgress().IsNull()) if( GetProgress()->UserBreak() ) return; GetProgress()->EndScope(); GetProgress()->Show(); GetProgress()->NewScope ( 15, "3D Curves" ); mycurves.read(is); if (!GetProgress().IsNull()) if( GetProgress()->UserBreak() ) return; GetProgress()->EndScope(); GetProgress()->Show(); GetProgress()->NewScope ( 10, "3D Polygons" ); ReadPolygon3D(IS);

8 if (!GetProgress().IsNull() ) if( GetProgress()->UserBreak() ) return; GetProgress()->EndScope(); GetProgress()->Show(); GetProgress()->NewScope ( 10, "Polygons On Triangulation" ); ReadPolygonOnTriangulation(IS); if (!GetProgress().IsNull()) if( GetProgress()->UserBreak() ) return; GetProgress()->EndScope(); GetProgress()->Show(); GetProgress()->NewScope ( 10, "Surfaces" ); mysurfaces.read(is); if (!GetProgress().IsNull() ) if( GetProgress()->UserBreak() ) return; GetProgress()->EndScope(); GetProgress()->Show(); GetProgress()->NewScope ( 15, "Triangulations" ); ReadTriangulation(IS); if (!GetProgress().IsNull()) if( GetProgress()->UserBreak() ) return; GetProgress()->EndScope(); GetProgress()->Show();

9 4.1 子部分 <3D curves> 示例 : BNF 定义 : 详细说明 : 由 Curves 开始, 后面是曲线的数量, 再下面是每条曲线的具体数据 读取 <curves> 部分的类为 GeomTools_CurveSet, 程序代码如下所示 : #define LINE 1 #define CIRCLE 2 #define ELLIPSE 3 #define PARABOLA 4 #define HYPERBOLA 5 #define BEZIER 6 #define BSPLINE 7

10 #define TRIMMED 8 #define OFFSET 9 //function : ReadCurve //purpose : Standard_IStream& GeomTools_CurveSet::ReadCurve(Standard_IStream& IS, Standard_Integer ctype; Handle(Geom_Curve)& C) try OCC_CATCH_SIGNALS IS >> ctype; switch (ctype) case LINE : Handle(Geom_Line) CC; IS >> CC; C = CC; case CIRCLE : Handle(Geom_Circle) CC; IS >> CC; C = CC; case ELLIPSE : Handle(Geom_Ellipse) CC; IS >> CC; C = CC; case PARABOLA : Handle(Geom_Parabola) CC; IS >> CC;

11 C = CC; case HYPERBOLA : Handle(Geom_Hyperbola) CC; IS >> CC; C = CC; case BEZIER : Handle(Geom_BezierCurve) CC; IS >> CC; C = CC; case BSPLINE : Handle(Geom_BSplineCurve) CC; IS >> CC; C = CC; case TRIMMED : Handle(Geom_TrimmedCurve) CC; IS >> CC; C = CC; case OFFSET : Handle(Geom_OffsetCurve) CC; IS >> CC; C = CC;

12 default: Handle(Geom_Curve) CC; GeomTools::GetUndefinedTypeHandler()->ReadCurve(ctype,IS,CC); C = CC; catch(standard_failure) #ifdef DEB Handle(Standard_Failure) anexc = Standard_Failure::Caught(); #endif cout <<"EXCEPTION in GeomTools_CurveSet::ReadCurve(..)!!!" << endl; cout << anexc << endl; C = NULL; return IS; 因为重载了操作符 >>, 使不同的类调用了不同的处理函数 因为读取点和方向用得很频繁, 所以将读取点和方向的函数程序先列出如下所示 : //function : ReadPnt //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_pnt& P) Standard_Real X=0.,Y=0.,Z=0.; IS >> X >> Y >> Z; P.SetCoord(X,Y,Z); return IS; //function : ReadDir //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_dir& D) Standard_Real X=0.,Y=0.,Z=0.; IS >> X >> Y >> Z; D.SetCoord(X,Y,Z); return IS;

13 4.1.1 <3D curve record 1>-Line 示例 : BNF 定义 : 详细说明 : <3D curve record 1> 定义了直线 直线数据由一个三维点 P 和一个三维方向矢量 D 组成 通过点 P 且方向为 D 的直线由下面的参数方程来定义 : C( u) = P + u D, u (, ). 示例数据表示的直线为通过点 P(1,0,3), 方向 D(0,1,0), 得到的参数方程为 : C( u) = (1,0,3) + u (0,1,0) 读取直线部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_pnt P(0.,0.,0.); gp_dir AX(1.,0.,0.); IS >> P >> AX; L = new Geom_Line(P,AX); return IS; Handle(Geom_Line)& L)

14 4.1.2 <3D curve record 2>-Circle 示例 : BNF 定义 : 详细说明 : <3D curve record 2> 定义了圆 圆的数据包含一个三维点 P, 一个正交坐标系的三个轴 的方向 N,Dx,Dy, 还有一个非负的实数 r 其中点 P 为圆心坐标, 圆位于平面的法向量 为 N 的平面上, 圆的半径为 r 圆的参数方程如下所示 : C( u) = P + r (cos( u) D + sin( u) D ), u [0,2π ). x 示例数据表示的圆为 : 圆心 P(1,2,3), 位于平面的法向量 N(0,0,1), 圆的方向 Dx =(1,0,-0),Dy=(-0,1,0), 半径 r=4, 其参数方向为 : C( u) = (1,2,3) + 4 (cos( u) (1,0, 0) + sin( u) (0,1,0)) 读取圆部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_pnt P(0.,0.,0.); Handle(Geom_Circle)& C) gp_dir A(1.,0.,0.),AX(1.,0.,0.),AY(1.,0.,0.); Standard_Real R=0.; IS >> P >> A >> AX >> AY >> R; C = new Geom_Circle(gp_Ax2(P,A,AX),R); return IS; y

15 4.1.3 <3D curve record 3>-Ellipse 示例 : BNF 定义 : 详细说明 : <3D curve record 3> 定义了椭圆 椭圆的数据包含三维点 P, 三维正交坐标系 N Dmaj Dmin 和两个非负实数 rmaj 和 rmin, 且 rmin<=rmaj 椭圆位于中心点 P, 法向量为 N 的平面上, 且长轴 短轴的方向分别为 Dmaj, Dmin, 长轴 短轴上的半径分别为 rmaj, rmin 椭圆的参数方 程定义如下所示 : 示例数据表示的椭圆的中心点 P=(1,2,3), 平面的法向量 N=(0,0,1), 长轴方 向 Dmaj=(1,0,-0), 短轴方向 Dmin=(-0,1,0), 长轴半径为 5, 短轴半径为 4, 读取椭圆部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_Ellipse)& E) gp_pnt P(0.,0.,0.); gp_dir A(1.,0.,0.),AX(1.,0.,0.),AY(1.,0.,0.); Standard_Real R1=0.,R2=0.; IS >> P >> A >> AX >> AY >> R1 >> R2; E = new Geom_Ellipse(gp_Ax2(P,A,AX),R1,R2); return IS;

16 4.1.4 <3D curve record 4>-Parabola 示例 : BNF 定义 : 详细说明 : <3D curve record 4> 定义了抛物线 抛物线数据包含三维点 P, 三维正交坐标系坐标轴方向 N,Dx,Dy 和一个非负的实数 f 抛物线通过点 P, 且位于法向量为 N 的平面上, 焦点长度为 f, 其参数方程如下所示 : 示例数据表示的抛物线过点 P=(1,2,3), 位于平面的法向 N=(0,0,1), 抛物线的另两个轴方向 Dx=(1,0,-0),Dy=(-0,1,0), 焦点长度 f=16 参数方程为 : 读取抛物线部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_Parabola)& C) gp_pnt P(0.,0.,0.); gp_dir A(1.,0.,0.),AX(1.,0.,0.),AY(1.,0.,0.); Standard_Real R1=0.; IS >> P >> A >> AX >> AY >> R1; C = new Geom_Parabola(gp_Ax2(P,A,AX),R1); return IS;

17 4.1.5 <3D curve record 5>-Hyperbola 示例 : BNF 定义 : 详细说明 : <3D curve record 5> 定义了双曲线 双曲线定义数据有三维点 P, 三维正交坐标系坐标 轴方向为 N,Dx,Dy 和两个非负实数 Kx,Ky 双曲线过 P 点且法向量为 N 的平面上, 其参数方程如下所示 : 示例数据表示的双曲线过点 P=(1,2,3) 且位于的平面的法向 N=(0,0,1), 其 它的数据 Dx=(1,0,-0),Dy=(-0,1,0),Kx=5 和 Ky=4 其参数方程为 : 读取双曲线部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_pnt P(0.,0.,0.); Handle(Geom_Hyperbola)& H) gp_dir A(1.,0.,0.),AX(1.,0.,0.),AY(1.,0.,0.); Standard_Real R1=0.,R2=0.; IS >> P >> A >> AX >> AY >> R1 >> R2; H = new Geom_Hyperbola(gp_Ax2(P,A,AX),R1,R2); return IS;

18 4.1.6 <3D curve record 6>-Bezier Curve 示例 : BNF 定义 : 详细说明 : <3D curve record 6> 定义了 Bezier 曲线 Bezier 曲线数据包含有理标志 r, 曲线的次数 m (degree m <= 25 查看源代码可知 OpenCascade 可处理的 B 样条次数不超过 25) 和带权的控 制点 (weight poles) 当有理标志位 r=0 时,weight poles 就是 m+1 个三维点 :B0,B1...Bn ; 当有理标志位 r=1 时,weight poles 就是带权的控制点 B0 h0... Bm hm Bi 是三维点,hi 是 [0, m] 正实数, 即权因子 当有理标志位 r=0 时, 即不是有理 Bezier 曲线时,hi=1 Bezier 曲 线参数方程如下所示 : 示例数据表示的 Bezier 曲线是有理 Bezier 曲线, 因其有理标志位 r=1, 次数 m=2, 带 权控制点及权因子分别为 :B0=(0,1,0),h0=4,B1=(1,-2,0),h1=5,B2=(2, 3,0),h2=6 Bezier 曲线的参数方程如下所示 : 读取 Bezier 曲线部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_BezierCurve)& B) Standard_Boolean rational=standard_false;

19 IS >> rational; // poles and weights Standard_Integer i=0,degree=0; IS >> degree; TColgp_Array1OfPnt poles(1,degree+1); TColStd_Array1OfReal weights(1,degree+1); for (i = 1; i <= degree+1; i++) IS >> poles(i); if (rational) IS >> weights(i); if (rational) B = new Geom_BezierCurve(poles,weights); else B = new Geom_BezierCurve(poles); return IS;

20 4.1.7 <3D curve record 7>-B-Spline curve 示例 : BNF 定义 : 详细说明 : <3D curve record 7> 定义了 B-Spline 曲线 B-Spline 曲线包含了有理标志位 r, 曲线次数 m<=25, 控制点数 n>=2, 重节点数 k, 带权控制点 wieght poles 和重节点 multiplicity knots 当有理标志位 r=0 时, 是非有理 B 样条曲线,weight poles 有 n 个三维点 B1,...,Bn; 当有理标志位 r=1 时, 是有理 B 样条曲线,weight poles 是 n 个带权控制点对 :B1, h1,... Bn, hn 这里 Bi 表示一个三维点,hi 表示一个 [0,1] 正实数 当有理标志位 r=0 时,hi=1 重节点有 k 对 u1, q1,... uk, qk 这里 ui 是重复度为 qi>=1 的节点 B-Spline 曲线的参数方程如下所示 : 其中基函数 Ni,j 有如下的递归定义 :

21 示例数据表示的 B 样条曲线为 : 有理标志位 r=1, 次数 m=1, 控制点数 n=3, 重节点 数 k=5, 带权控制点 :B1=(0,1,0),h1=4,B2=(1,-2,0),h2=5,B3=(2,3, 0),h3=6; 重节点 u1=0,q1=1,u2=0.25,q2=1,u3=0.5,q3=1,u4=0.75,q4=1, u5=1,q5=1 B-Spline 曲线的参数方程如下所示 : 读取 B-Spline 曲线部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_BSplineCurve)& B) Standard_Boolean rational=standard_false,periodic=standard_false; IS >> rational >> periodic; // poles and weights Standard_Integer i=0,degree=0,nbpoles=0,nbknots=0; IS >> degree >> nbpoles >> nbknots; TColgp_Array1OfPnt poles(1,nbpoles); TColStd_Array1OfReal weights(1,nbpoles); for (i = 1; i <= nbpoles; i++) IS >> poles(i); if (rational) IS >> weights(i); TColStd_Array1OfReal knots(1,nbknots); TColStd_Array1OfInteger mults(1,nbknots);

22 for (i = 1; i <= nbknots; i++) IS >> knots(i) >> mults(i); if (rational) B = new Geom_BSplineCurve(poles,weights,knots,mults,degree,periodic); else B = new Geom_BSplineCurve(poles,knots,mults,degree,periodic); return IS;

23 4.1.8 <3D curve record 8>-Trimmed Curve 示例 : BNF 定义 : 详细说明 : <3D curve record 8> 定义了裁剪曲线 (trimmed curve) 裁剪曲线数据包含: 两个实数 umin, umax 和 <3D curve record>, 且 umin<umax 裁剪曲线是将 <3D curve record> 描述的曲线 B 限制在 [umin,umax] 裁剪曲线的参数方程如下所示: 示例数据表示的裁剪曲线为 :umin=-4,umax=5, 曲线 B(u)=(1,2,3)+u(1,0, 0) 裁剪曲线的参数方程如下所示 : 读取裁剪曲线部分的程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, Standard_Real p1=0.,p2=0.; IS >> p1 >> p2; Handle(Geom_Curve) BC; Handle(Geom_TrimmedCurve)& C) GeomTools_CurveSet::ReadCurve(IS,BC); C = new Geom_TrimmedCurve(BC,p1,p2); return IS;

24 4.1.9 <3D curve record 9>-Offset Curve 示例 : BNF 定义 : 详细说明 : <3D curve record 9> 定义了偏移曲线 (offset curve) 偏移曲线的数据包含偏移距离 d, 偏移方向 D 和曲线数据 <3D curve record> 偏移曲线是将 <3D curve record> 描述的曲线沿矢 量偏移距离 d 后的结果 偏移曲线的参数方程如下所示 : 示例数据表示的偏移曲线为偏移距离 d=2, 方向 D=(0,1,0), 基曲线 B(u)=(1, 2,3)+u(1,0,0), 其参数方程如下所示 : 读取偏移曲线部分程序代码如下所示 : //function : ReadCurve //purpose : static Standard_IStream& operator>>(standard_istream& IS, Standard_Real p=0.; IS >> p; gp_dir D(1.,0.,0.); IS >> D; Handle(Geom_OffsetCurve)& C)

25 Handle(Geom_Curve) BC; GeomTools_CurveSet::ReadCurve(IS,BC); C = new Geom_OffsetCurve(BC,p,D); return IS;

26 4.2 <surface> 子部分 示例 : BNF 定义 : 读取 <surface> 部分的程序代码如下所示 : #define PLANE 1 #define CYLINDER 2 #define CONE 3 #define SPHERE 4 #define TORUS 5 #define LINEAREXTRUSION 6 #define REVOLUTION 7 #define BEZIER 8 #define BSPLINE 9 #define RECTANGULAR 10

27 #define OFFSET 11 //function : ReadSurface //purpose : Standard_IStream& GeomTools_SurfaceSet::ReadSurface(Standard_IStream& IS, Standard_Integer stype; Handle(Geom_Surface)& S) try OCC_CATCH_SIGNALS IS >> stype; switch (stype) case PLANE : Handle(Geom_Plane) SS; IS >> SS; S = SS; case CYLINDER : Handle(Geom_CylindricalSurface) SS; IS >> SS; S = SS; case CONE : Handle(Geom_ConicalSurface) SS; IS >> SS; S = SS; case SPHERE : Handle(Geom_SphericalSurface) SS; IS >> SS;

28 S = SS; case TORUS : Handle(Geom_ToroidalSurface) SS; IS >> SS; S = SS; case LINEAREXTRUSION : Handle(Geom_SurfaceOfLinearExtrusion) SS; IS >> SS; S = SS; case REVOLUTION : Handle(Geom_SurfaceOfRevolution) SS; IS >> SS; S = SS; case BEZIER : Handle(Geom_BezierSurface) SS; IS >> SS; S = SS; case BSPLINE : Handle(Geom_BSplineSurface) SS; IS >> SS; S = SS;

29 case RECTANGULAR : Handle(Geom_RectangularTrimmedSurface) SS; IS >> SS; S = SS; case OFFSET : Handle(Geom_OffsetSurface) SS; IS >> SS; S = SS; default : Handle(Geom_Surface) SS; GeomTools::GetUndefinedTypeHandler()->ReadSurface(stype,IS,SS); S = SS; catch(standard_failure) #ifdef DEB Handle(Standard_Failure) anexc = Standard_Failure::Caught(); cout <<"EXCEPTION in GeomTools_SurfaceSet::ReadSurface(..)!!!" << endl; cout << anexc << endl; #endif S = NULL; return IS;

30 4.2.1 <surface record 1>-Plane 示例 : BNF 定义 : 详细说明 : <surface record 1> 定义了平面 平面数据包含三维点 P 和三维正交坐标系 N,Du,Dv 平面通过点 P, 且其法向量为 N 其参数方程如下所示 : 示例数据表示的平面为通过点 P=(0,0,3), 法向量 N=(0,0,1), 其参数方程如下所 示 : 读取平面部分的程序代码如下所示 : //function : ReadAx3 //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_ax3& A3) gp_pnt P(0.,0.,0.); gp_dir A(1.,0.,0.),AX(1.,0.,0.),AY(1.,0.,0.); IS >> P >> A >> AX >> AY; gp_ax3 ax3(p,a,ax); if (AY.DotCross(A,AX) < 0) ax3.yreverse(); A3 = ax3; return IS; static Standard_IStream& operator>>(standard_istream& IS, gp_ax3 A; IS >> A; S = new Geom_Plane(A); return IS; Handle(Geom_Plane)& S)

31 4.2.2 <surface record 2>-Cylinder 示例 : BNF 定义 : 详细说明 : <surface record 2> 定义了圆柱面 圆柱面的数据包含三维点 P, 三维正交坐标系 Dv, Dx,Dy 和一个非负实数 r 圆柱面的轴通过点 P, 方向为 Dv, 圆柱面的半径为 r, 其参数 方程如下所示 : 示例数据表示的圆柱面为轴通过点 P=(1,2,3), 轴的方向 Dv=(0,0,1), 方向 Dx= (1,0,-0),Dy=(-0,1,0), 半径 r=4, 其参数方程如下所示 : 读取圆柱面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_ax3 A; Standard_Real R=0.; IS >> A >> R; Handle(Geom_CylindricalSurface)& S) S = new Geom_CylindricalSurface(A,R); return IS;

32 4.2.3 <surface record 3>-Cone 示例 : BNF 定义 : 详细说明 : <surface record 3> 定义了圆锥面 圆锥面的数据包含三维点 P, 正交坐标系 Dz,Dx, Dy, 非负实数 r 和实数 ψ( 范围为 (-π/2, π/2)) 圆锥面通过点 P 且轴的方向为 Dz 过 点 P 且与方向 Dx,Dy 平行的平面为圆锥面的参考平面 (referenced plane) 参考平面截圆 锥面为一个圆, 其半径为 r 其参数方程如下所示 : 示例数据表示的圆锥面的轴通过点 P=(1,2,3), 方向 Dz=(0,0,1) 圆锥面的 其他数据是 Dx=(1,0,-0),Dy=(-0,1,0), 半径 r=4, 角度 ψ=0.75 其参数方 程如下所示 : 读取圆锥面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_ax3 A; Standard_Real R=0.,Ang=0.; IS >> A >> R >> Ang; Handle(Geom_ConicalSurface)& S) S = new Geom_ConicalSurface(A,Ang,R); return IS;

33 4.2.4 <surface record 4>-Sphere 示例 : BNF 定义 : 详细说明 : <surface record 4> 定义了球面 球面的数据包含三维点 P, 三维正交坐标系 Dz,Dx, Dy 和非负实数 r 即球面的球心为点 P, 半径为 r, 其参数方程如下所示 : 示例数据表示的球面为球心过点 P=(1,2,3), 方向分别为 Dz=(0,0,1),Dx= (1,0,-0),Dy=(-0,1,0), 半径 r=4 其参数方程如下所示 : 读取球面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_ax3 A; Standard_Real R=0.; IS >> A >> R; Handle(Geom_SphericalSurface)& S) S = new Geom_SphericalSurface(A,R); return IS;

34 4.2.5 <surface record 5>-Torus 示例 : BNF 定义 : 详细说明 : <surface record 5> 定义了圆环面 圆环面的数据包含三维点 P, 三维正交坐标系 Dz,Dx, Dy 和非负实数 r1,r2 圆环面的轴通过点 P, 方向为 Dz,r1 是从圆环面的圆的中心到点 P 的距离, 圆环面的圆的半径为 r2 圆环面的参数方程如下所示 : 示例数据表示的圆环面的轴通过点 P=(1,2,3), 轴的方向为 Dz=(0,0,1) 其它数据为 Dx=(1,0,-0),Dy=(0,1,0),r1=8,r2=4, 其参数方程如下所示 : 读取圆环面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_ax3 A; Standard_Real R1=0.,R2=0.; IS >> A >> R1 >> R2; Handle(Geom_ToroidalSurface)& S) S = new Geom_ToroidalSurface(A,R1,R2); return IS;

35 4.2.6 <surface record 6>-Linear Extrusion 示例 : BNF 定义 : 详细说明 : <surface record 6> 定义了线性拉伸面 线性拉伸面的数据包含三维方向 Dv 和三维曲线 <3D curve record> 其参数方程如下所示 : 示例数据表示的线性拉伸面的拉伸方向 Dv=(0,0.6,0.8), 拉伸曲线为圆 拉伸面的 参数方程如下所示 : 读取线性拉伸面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_dir D(1.,0.,0.); Handle(Geom_Curve) C; IS >> D; Handle(Geom_SurfaceOfLinearExtrusion)& S) GeomTools_CurveSet::ReadCurve(IS,C); S = new Geom_SurfaceOfLinearExtrusion(C,D); return IS;

36 4.2.7 <surface record 7>-Revolution Surface 示例 : BNF 定义 : 详细说明 : <surface record 7> 定义了旋转曲面 旋转曲面的数据包含三维点 P, 三维方向 D 和三维 曲线 旋转曲面的轴通过点 P 且方向为 D, 旋转曲线为 C 与旋转轴共面 旋转曲面的参数 方程如下所示 : 示例数据表示的旋转曲面的旋转轴通过点 P=(-4,0,3), 方向 D=(0,1,0), 旋 转曲线是一个圆 其参数方程如下所示 : 读取旋转曲面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, gp_pnt P(0.,0.,0.); gp_dir D(1.,0.,0.); Handle(Geom_Curve) C; Handle(Geom_SurfaceOfRevolution)& S) IS >> P >> D; GeomTools_CurveSet::ReadCurve(IS,C); S = new Geom_SurfaceOfRevolution(C,gp_Ax1(P,D)); return IS;

37 4.2.8 <surface record 8>-Bezier Surface 示例 : BNF 定义 : 详细说明 : <surface record 8> 定义了 Bezier 曲面 曲面的数据包含 u 有理标志位 ru,v 有理标志位 rv, 曲面次数 mu, mv, 和 weight poles u,v 的次数都不能大于 25 当 ru+rv=0 时,weight poles 是 (mu+1)(mv+1) 个三维点 Bi,j((i,j) 0,..., mux0,...,mv),hi,j=1((i,j) 0,...,mux0,...,mv); 当 ru+rv 0 时,weight poles 是 (mu+1)(mv+1) 个带权控制点对 Bi,j,hi,j Bi,j 是三 维点,hi,j 是权因子, 正实数 Bezier 曲面的参数方程如下所示 : 示例数据表示的 Bezier 曲面为 :u 有理标志位 ru=1,v 有理标志位 rv=1, 次数 mu=2, mv=1,weight poles 为 :B0,0=(0,0,1),h0,0=7,B0,1=(1,0,-4),h0,1=10, B1,0=(0,1,-2),h1,0=8,B1,1=(1,1,5),h1,1=11,B2,0=(0,2,3),h2,0=9, B2,1=(1,2,6),h2,1=12 曲面的参数方程为 :

38 读取 Bezier 曲面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_BezierSurface)& S) Standard_Boolean urational=standard_false, vrational=standard_false; IS >> urational >> vrational; Standard_Integer udegree=0, vdegree=0; IS >> udegree >> vdegree; TColgp_Array2OfPnt poles(1,udegree+1,1,vdegree+1); TColStd_Array2OfReal weights(1,udegree+1,1,vdegree+1); Standard_Integer i,j; for (i = 1; i <= udegree+1; i++) for (j = 1; j <= vdegree+1; j++) IS >> poles(i,j); if (urational vrational) IS >> weights(i,j); if (urational vrational) S = new Geom_BezierSurface(poles,weights); else S = new Geom_BezierSurface(poles); return IS;

39 4.2.9 <surface record 9>-B-Spline Surface 示例 : BNF 定义 :

40 详细说明 : <surface record 9> 定义了 B-Spline 曲面 B 样条曲面数据包含 u 有理标志位 ru,v 有理 标志位 rv,u 次数 mu<=25;v 次数 mv<=25,u 控制点数 nu>=2,v 控制点数 nv>=2,u 重节 点数 ku,v 重节点数 kn,weight poles,u 重节点,v 重节点 当 ru+rv=0 时,weight poles 是 (mu+1)(mv+1) 个三维点 Bi,j((i,j) 0,..., mux0,...,mv),hi,j=1((i,j) 0,...,mux0,...,mv); 当 ru+rv 0 时,weight poles 是 (mu+1)(mv+1) 个带权控制点对 Bi,j,hi,j Bi,j 是三 维点,hi,j 是权因子, 正实数 u 重节点及其重数有 ku 对 :u1,q1,...,uku,qku 这里 ui 是重数为 qi>=1 的节点 : v 重节点及其重数有 kv 对 :u1,q1,...,ukv,qkv 这里 vi 是重数为 qi>=1 的节点 : B-Spline 曲面的参数方程如下所示 : 基函数 Ni,j 和 Mi,j 有如下的递归定义 :

41 示例数据表示的 B-Spline 曲面为 :u 有理标志位 ru=1,v 有理标志位 rv=1,u 次数 mu =1,v 次数 mv=1,u 控制点数 nu=3,v 控制点数 nv=2,u 有重复度的节点数 ku=5,v 有重复度节点数 kv=4, 带权控制点 B1,1=(0,0,1),h1,1=7,B1,2=(1,0,-4), h1,2=10,b2,1=(0,1,-2),h2,1=8,b2,2=(1,1,5),h2,2=11,b3,1=(0,2,3), h3,1=9,b3,2=(1,2,6),h3,2=12,u 有重复度节点 u1=0,q1=1,u2=0.25,q2=1, u3=0.5,q3=1,u4=0.75,q4=1,u5=1,q5=1,v 有重度度节点 v1=0,r1=1,v2=0.3, r2=1,v3=0.7,r3=1,v4=1,r4=1 B-Spline 曲面的参数方程如下所示 : 读取 B-Spline 曲面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_BSplineSurface)& S) Standard_Boolean urational=standard_false, vrational=standard_false, IS >> urational >> vrational; IS >> uperiodic >> vperiodic; uperiodic=standard_false, vperiodic=standard_false; Standard_Integer vdegree=0,nbupoles=0,nbvpoles=0,nbuknots=0,nbvknots=0; IS >> udegree >> vdegree; IS >> nbupoles >> nbvpoles; IS >> nbuknots >> nbvknots; udegree=0, TColgp_Array2OfPnt poles(1,nbupoles,1,nbvpoles); TColStd_Array2OfReal weights(1,nbupoles,1,nbvpoles); Standard_Integer i,j; for (i = 1; i <= nbupoles; i++) for (j = 1; j <= nbvpoles; j++) IS >> poles(i,j); if (urational vrational) IS >> weights(i,j);

42 TColStd_Array1OfReal uknots(1,nbuknots); TColStd_Array1OfInteger umults(1,nbuknots); for (i = 1; i <= nbuknots; i++) IS >> uknots(i) >> umults(i); TColStd_Array1OfReal vknots(1,nbvknots); TColStd_Array1OfInteger vmults(1,nbvknots); for (i = 1; i <= nbvknots; i++) IS >> vknots(i) >> vmults(i); if (urational vrational) S = new Geom_BSplineSurface(poles,weights,uknots,vknots,umults,vmults, else udegree,vdegree,uperiodic,vperiodic); S = new Geom_BSplineSurface(poles,uknots,vknots,umults,vmults, udegree,vdegree,uperiodic,vperiodic); return IS;

43 <surface recored 10>-Rectangular Trim Surface 示例 : BNF 定义 : 详细说明 : <surface record 10> 定义了矩形裁剪曲面 矩形裁剪曲面的数据包含实数 umin,umax, vmin,vmax 和一个曲面 矩形裁剪曲面是将曲面限制在矩形区域 [umin,umax]x[vmin,vmax] 内得到的曲面 曲面的参数方程如下所示 : 示例数据表示的矩形裁剪曲面的矩形裁剪区域为 [-1,2]x[-3,4], 被裁剪曲面 B(u, v)=(1,2,3)+u(1,0,0)+v(0,1,0) 其参数方程如下所示 : 读取矩形裁剪曲面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, Handle(Geom_RectangularTrimmedSurface)& S) Standard_Real U1=0.,U2=0.,V1=0.,V2=0.; IS >> U1 >> U2 >> V1 >> V2; Handle(Geom_Surface) BS; GeomTools_SurfaceSet::ReadSurface(IS,BS); S = new Geom_RectangularTrimmedSurface(BS,U1,U2,V1,V2); return IS;

44 <surface record 11>-Offset Surface 示例 : BNF 定义 : 详细说明 : <surface record 11> 定义了偏移曲面 偏移曲面的数据包含偏移距离 d 和曲面 偏移曲面的就将基准曲面 B 没曲面的法向 N 上偏移距离 d 得到的曲面 偏移曲面的参数方程如下所示 : 示例数据表示的偏移曲面的偏移距离 d=-2, 基准曲面 B(u,v)=(1,2,3)+u(1, 0,0)+v(0,1,0) 其参数方程如下所示 : 读取偏移曲面部分的程序代码如下所示 : //function : operator>> //purpose : static Standard_IStream& operator>>(standard_istream& IS, Standard_Real O=0.; IS >> O; Handle(Geom_Surface) BS; Handle(Geom_OffsetSurface)& S) GeomTools_SurfaceSet::ReadSurface(IS,BS); S = new Geom_OffsetSurface(BS,O); return IS;

45 4.3 <2D curves> 子部分 因与 <3D curves> 部分基本相同, 略去此部分, 请参考原文

46 4.4 <3D polygons> 子部分 示例 : BNF 定义 : 详细说明 : <3D polygon record> 定义了空间多段线 (3D polyline)l, 用来逼近空间曲线 C 多段线 的数据包含节点数 m>=2, 参数显示标志位 p, 逼近偏差 (deflection)d>=0, 节点 Ni(1=<i<=m), 参数 ui(1=<i<=m) 当参数显示标志位 p=1 时, 参数 u 才会显示 多段线 L 通过这些节点, 多段线 L 逼近曲线 C 的逼近偏差定义如下所示 : 参数 ui(1=<i<=m) 是曲线 C 上通过节点 Ni 的参数值 : 示例数据表示的多段线为 :m=2, 参数显示标志位 p=1, 逼近偏差 d=0.1, 节点 N1 =(1,0,0),N2=(2,0,0), 参数 u1=0,u2=1

47 读取 polygons 部分的程序代码如下所示 : //function : ReadPolygon3D //purpose : void BRepTools_ShapeSet::ReadPolygon3D(Standard_IStream& IS) char buffer[255]; // Standard_Integer i, j, p, val, nbpol, nbnodes, hasparameters; Standard_Integer i, j, p, nbpol=0, nbnodes =0, hasparameters = Standard_False; Standard_Real d, x, y, z; IS >> buffer; if (strstr(buffer,"polygon3d") == NULL) return; Handle(Poly_Polygon3D) P; IS >> nbpol; //OCC19559 Handle(Message_ProgressIndicator) progress = GetProgress(); Message_ProgressSentry PS(progress, "3D Polygons", 0, nbpol, 1); for (i=1; i<=nbpol && PS.More(); i++, PS.Next()) if (!progress.isnull() ) progress->show(); IS >> nbnodes; IS >> hasparameters; TColgp_Array1OfPnt Nodes(1, nbnodes); IS >> d; for (j = 1; j <= nbnodes; j++) IS >> x >> y >> z; Nodes(j).SetCoord(x,y,z); if (hasparameters) TColStd_Array1OfReal Param(1,nbnodes); for (p = 1; p <= nbnodes; p++) IS >> Param(p); P = new Poly_Polygon3D(Nodes, Param); else P = new Poly_Polygon3D(Nodes); P->Deflection(d); mypolygons3d.add(p);

48 4.5 <triangulations> 子部分 示例 : BNF 定义 : 详细说明 : <triangulation record> 定义了逼近曲面 S 的三角剖分 T(triangulation) 三角剖分的数据 包含节点数 m>=3, 三角形数 k>=1, 参数显示标志位 p, 逼近偏差 d>=0, 节点 Ni(1<=i<=m), 参数对 ui,vi(1<=i<=m), 三角形 nj,1,nj,2,nj,3 参数只有当参数显示标志位 p=1 时才显示 三角剖分逼近曲面的偏差 d 定义如下所示 :

49 参数对 ui,vi 描述了曲面 S 上过节点 Ni 的参数 : 三角形 nj,1, nj,2, nj,3 用来取得三角形的三个顶点值 Nnj,1,Nnj,2,Nnj,3, 节点遍历的顺序就是 Nnj,1,Nnj,2,Nnj,3 从三角剖分 T 的任意一侧遍历, 所有三角形都有相同 的方向 : 顺时针或逆时针 三角剖分中的三角形数据 : 表示的三角剖分为 :m=4 个节点,k=2 个三角形, 参数显示标志位 p=1, 逼近偏差 d=0, 节点 N1(0,0,0),N2(0,0,3),N3(0,2,3),N4(0,2,0), 参数值 (u1,v1)= (0,0),(u2,v2)=(3,0),(u3,v3)=(3,-2),(u4,v4)=(0,-2) 从点 (1,0, 0)((-1,0,0)), 三角形是顺时针 ( 逆时针 ) 的 读取三角剖分部分的程序代码如下所示 : //function : ReadTriangulation //purpose : void BRepTools_ShapeSet::ReadTriangulation(Standard_IStream& IS) char buffer[255]; // Standard_Integer i, j, val, nbtri; Standard_Integer i, j, nbtri =0; Standard_Real d, x, y, z; Standard_Integer nbnodes =0, nbtriangles=0; Standard_Boolean hasuv= Standard_False; Handle(Poly_Triangulation) T; IS >> buffer; if (strstr(buffer,"triangulations") == NULL) return; IS >> nbtri; //OCC19559 Handle(Message_ProgressIndicator) progress = GetProgress(); Message_ProgressSentry PS(progress, "Triangulations", 0, nbtri, 1); for (i=1; i<=nbtri && PS.More();i++, PS.Next()) if (!progress.isnull() ) progress->show(); IS >> nbnodes >> nbtriangles >> hasuv; IS >> d;

50 TColgp_Array1OfPnt Nodes(1, nbnodes); TColgp_Array1OfPnt2d UVNodes(1, nbnodes); for (j = 1; j <= nbnodes; j++) IS >> x >> y >> z; Nodes(j).SetCoord(x,y,z); if (hasuv) for (j = 1; j <= nbnodes; j++) IS >> x >> y; UVNodes(j).SetCoord(x,y); // read the triangles Standard_Integer n1,n2,n3; Poly_Array1OfTriangle Triangles(1, nbtriangles); for (j = 1; j <= nbtriangles; j++) IS >> n1 >> n2 >> n3; Triangles(j).Set(n1,n2,n3); if (hasuv) T = new Poly_Triangulation(Nodes,UVNodes,Triangles); else T = new Poly_Triangulation(Nodes,Triangles); T->Deflection(d); mytriangulations.add(t);

51 4.6 <polygons on triangulations> 子部分 示例 : BNF 定义 :

52 详细说明 : <polygons on triangulations> 定义三角剖分上逼近曲线 C 的多段线 L 多段线 L 的数据包含节点数 m>=2, 节点号 ni>=1, 逼近偏差 d>=0, 参数显示标志位 p 和参数 ui(1=<i<=m) 参数只有在参数显示标志位 p=1 时才显示 多段线 L 逼近曲线 C 的偏差 d 的定义为 : 参数 ui(1<=i<=m) 是曲线 C 上的第 ni 个节点的参数 读取多段线部分的程序代码如下所示 : //function : ReadPolygonOnTriangulation //purpose : void BRepTools_ShapeSet::ReadPolygonOnTriangulation(Standard_IStream& IS) char buffer[255]; IS >> buffer; if (strstr(buffer,"polygonontriangulations") == NULL) return; Standard_Integer i, j, val, nbpol = 0, nbnodes =0;

53 Standard_Integer hasparameters; Standard_Real par; Handle(TColStd_HArray1OfReal) Param; Handle(Poly_PolygonOnTriangulation) Poly; IS >> nbpol; //OCC19559 Handle(Message_ProgressIndicator) progress = GetProgress(); Message_ProgressSentry PS(progress, "Polygons On Triangulation", 0, nbpol, 1); for (i=1; i<=nbpol&& PS.More(); i++, PS.Next()) if (!progress.isnull() ) progress->show(); IS >> nbnodes; TColStd_Array1OfInteger Nodes(1, nbnodes); for (j = 1; j <= nbnodes; j++) IS >> val; Nodes(j) = val; IS >> buffer; // if (!strcasecmp(buffer, "p")) Standard_Real def; IS >> def; IS >> hasparameters; if (hasparameters) TColStd_Array1OfReal Param1(1, nbnodes); for (j = 1; j <= nbnodes; j++) // IS >> par; Param1(j) = par; Poly = new Poly_PolygonOnTriangulation(Nodes, Param1); else Poly = new Poly_PolygonOnTriangulation(Nodes); Poly->Deflection(def); // else // IS.seekg(ppp); // Poly = new Poly_PolygonOnTriangulation(Nodes); // // mynodes.add(poly); // else IS.seekg(pos); 几何意义上的曲线 C 是由参数方程中的参数往 u 增加的方向确定的

54 五 <shapes> 部分 示例 : 一个包含 <shapes> 部分的完整 *.brep 文件在附录中给出了 BNF 定义 : 详细说明 : <shape flag word>f1f2f3f4f5f6f7 中的每一位都有意义, 如下所示 : 1) f1 : free 2) f2 : modified 3) f3: IGNORED(version 1)/checked (version 2) 4) f4: orientable 5) f5: closed 6) f6: infinite 7) f7: convex The flags are used in a special way[1]. <shape subshape orientation> 表示意义如下所示 :

55 1) + : forward 2) - : reversed 3) i: internal 4) e: external <shape subshape orientation> is used in a special way[1]. <shape subshape number> <shape recored> <shape subrecord> 的类型有如下几种 : 1) Ve : vertex 2) Ed : edge 3) Wi : wire 4) Fa : face 5) Sh : shell 6) So : solid 7) CS : compsolid 8) Co : compound <shape final record> 读取 <shapes> 部分的程序代码如下所示 : //function : ReadGeometry //purpose : void BRepTools_ShapeSet::ReadGeometry(const TopAbs_ShapeEnum T, Standard_IStream& IS, TopoDS_Shape& S) // Read the geometry Standard_Integer val,c,pc,pc2,s,s2,l,l2,t, pt, pt2; Standard_Real tol,x,y,z,first,last,p1,p2; Standard_Real PfX,PfY,PlX,PlY; gp_pnt2d apf, apl; Standard_Boolean closed; #ifndef DEB GeomAbs_Shape reg = GeomAbs_C0; #else GeomAbs_Shape reg; #endif switch (T) // // vertex //

56 case TopAbs_VERTEX : TopoDS_Vertex& V = TopoDS::Vertex(S); // Read the point geometry IS >> tol; IS >> X >> Y >> Z; mybuilder.makevertex(v,gp_pnt(x,y,z),tol); Handle(BRep_TVertex) TV = Handle(BRep_TVertex)::DownCast(V.TShape()); BRep_ListOfPointRepresentation& lpr = TV->ChangePoints(); TopLoc_Location L; do IS >> p1 >> val; Handle(BRep_PointRepresentation) PR; switch (val) case 1 : IS >> c; // Modified by Sergey KHROMOV - Wed Apr 24 13:59: Begin if (mycurves.curve(c).isnull()) // Modified by Sergey KHROMOV - Wed Apr 24 13:59: End Handle(BRep_PointOnCurve) POC = new BRep_PointOnCurve(p1, mycurves.curve(c), L); PR = POC; case 2 : IS >> pc >> s; // Modified by Sergey KHROMOV - Wed Apr 24 13:59: Begin if (mycurves2d.curve2d(pc).isnull() mysurfaces.surface(s).isnull()) // Modified by Sergey KHROMOV - Wed Apr 24 13:59: End

57 Handle(BRep_PointOnCurveOnSurface) POC = new BRep_PointOnCurveOnSurface(p1, mycurves2d.curve2d(pc), mysurfaces.surface(s), L); PR = POC; case 3 : IS >> p2 >> s; // Modified by Sergey KHROMOV - Wed Apr 24 13:59: Begin if (mysurfaces.surface(s).isnull()) // Modified by Sergey KHROMOV - Wed Apr 24 13:59: End Handle(BRep_PointOnSurface) POC = new BRep_PointOnSurface(p1,p2, mysurfaces.surface(s), PR = POC; L); if (val > 0) IS >> l; if (!PR.IsNull()) PR->Location(Locations().Location(l)); lpr.append(pr); while (val > 0); // // edge // case TopAbs_EDGE : // Create an edge

58 TopoDS_Edge& E = TopoDS::Edge(S); mybuilder.makeedge(e); // Read the curve geometry IS >> tol; IS >> val; mybuilder.sameparameter(e,(val == 1)); IS >> val; mybuilder.samerange(e,(val == 1)); IS >> val; mybuilder.degenerated(e,(val == 1)); do IS >> val; switch (val) case 1 : IS >> c >> l; if (!mycurves.curve(c).isnull()) mybuilder.updateedge(e,mycurves.curve(c), Locations().Location(l),tol); IS >> first >> last; if (!mycurves.curve(c).isnull()) Standard_Boolean Only3d = Standard_True; mybuilder.range(e,first,last,only3d); // -1- Curve 3D case 2 : case 3 : closed = (val == 3); IS >> pc; if (closed) IS >> pc2; reg = ReadRegularity(IS); // -2- Curve on surf // -3- Curve on closed surf // surface, location IS >> s >> l; // range IS >> first >> last;

59 // read UV Points // for XML Persistence higher performance if (FormatNb() == 2) IS >> PfX >> PfY >> PlX >> PlY; apf = gp_pnt2d(pfx,pfy); apl = gp_pnt2d(plx,ply); // Modified by Sergey KHROMOV - Wed Apr 24 12:11: Begin if (mycurves2d.curve2d(pc).isnull() (closed && mycurves2d.curve2d(pc2).isnull()) mysurfaces.surface(s).isnull()) // Modified by Sergey KHROMOV - Wed Apr 24 12:11: End if (closed) if (FormatNb() == 2) mybuilder.updateedge(e,mycurves2d.curve2d(pc), else mycurves2d.curve2d(pc2), mysurfaces.surface(s), Locations().Location(l),tol, apf, apl); mybuilder.updateedge(e,mycurves2d.curve2d(pc), mycurves2d.curve2d(pc2), mysurfaces.surface(s), Locations().Location(l),tol); mybuilder.continuity(e, mysurfaces.surface(s), else if (FormatNb() == 2) mysurfaces.surface(s), Locations().Location(l), Locations().Location(l), reg); mybuilder.updateedge(e,mycurves2d.curve2d(pc), mysurfaces.surface(s), else Locations().Location(l),tol, apf, apl);

60 mybuilder.updateedge(e,mycurves2d.curve2d(pc), mysurfaces.surface(s), mybuilder.range(e, mysurfaces.surface(s), Locations().Location(l),tol); Locations().Location(l), first,last); case 4 : reg = ReadRegularity(IS); IS >> s >> l >> s2 >> l2; // -4- Regularity // Modified by Sergey KHROMOV - Wed Apr 24 12:39: Begin if (mysurfaces.surface(s).isnull() mysurfaces.surface(s2).isnull()) // Modified by Sergey KHROMOV - Wed Apr 24 12:39: End mybuilder.continuity(e, mysurfaces.surface(s), mysurfaces.surface(s2), Locations().Location(l), Locations().Location(l2), reg); case 5 : //szy IS >> c >> l; // -5- Polygon3D mybuilder.updateedge(e,handle(poly_polygon3d)::downcast(mypolygons3d(c))); if (c > 0 && c <= mypolygons3d.extent()) mybuilder.updateedge(e,handle(poly_polygon3d)::downcast(mypolygons3d(c)), Locations().Location(l)); case 6 : case 7 : closed = (val == 7); IS >> pt; if (closed) IS >> pt2; IS >> t >> l;

61 if (closed) if (t > 0 && t <= mytriangulations.extent() && pt > 0 && pt <= mynodes.extent() && pt2 > 0 && pt2 <= mynodes.extent()) mybuilder.updateedge (E, Handle(Poly_PolygonOnTriangulation)::DownCast(myNodes(pt)), else Handle(Poly_PolygonOnTriangulation)::DownCast(myNodes(pt2)), Handle(Poly_Triangulation)::DownCast(myTriangulations(t)), Locations().Location(l)); if (t > 0 && t <= mytriangulations.extent() && pt > 0 && pt <= mynodes.extent()) mybuilder.updateedge (E,Handle(Poly_PolygonOnTriangulation)::DownCast(myNodes(pt)), // range Handle(Poly_Triangulation)::DownCast(myTriangulations(t)), Locations().Location(l)); while (val > 0); // // wire // case TopAbs_WIRE : mybuilder.makewire(topods::wire(s)); // // face // case TopAbs_FACE : // create a face : TopoDS_Face& F = TopoDS::Face(S); // streampos pos;

62 mybuilder.makeface(f); IS >> val; // natural restriction if (val == 0 val == 1) IS >> tol >> s >> l; // Modified by Sergey KHROMOV - Wed Apr 24 12:39: Begin if (!mysurfaces.surface(s).isnull()) // Modified by Sergey KHROMOV - Wed Apr 24 12:39: End mybuilder.updateface(topods::face(s), mysurfaces.surface(s), Locations().Location(l),tol); mybuilder.naturalrestriction(topods::face(s),(val == 1)); // pos = IS.tellg(); // IS >> val; else if(val == 2) //only triangulation IS >> s; mybuilder.updateface(topods::face(s), Handle(Poly_Triangulation)::DownCast(myTriangulations(s))); // else pos = IS.tellg(); // BUC60769 if(val == 2) char string[260]; IS.getline ( string, 256, '\n' ); IS.getline ( string, 256, '\n' ); if (string[0] == '2') // cas triangulation s = atoi ( &string[2] ); if (s > 0 && s <= mytriangulations.extent()) mybuilder.updateface(topods::face(s), Handle(Poly_Triangulation)::DownCast(myTriangulations(s))); // else IS.seekg(pos);

63 // // shell // case TopAbs_SHELL : mybuilder.makeshell(topods::shell(s)); // // solid // case TopAbs_SOLID : mybuilder.makesolid(topods::solid(s)); // // compsolid // case TopAbs_COMPSOLID : mybuilder.makecompsolid(topods::compsolid(s)); // // compound // case TopAbs_COMPOUND : mybuilder.makecompound(topods::compound(s)); default:

64 5.1 通用术语 Common Terms 下面的数据定义在 <vertex data> <edge data> <face data> 中都有用到 : BNF 定义 : 详细说明 : <location number> 是 <locations> 部分的 <location record> 编号 <location record> 从 1 开始 编号, 编号 0 表示是单位矩阵变换 <3D curve number> 是 <geometry> 部分的 <3D curves> 子部分中 <3D curve record> 编号 <3D curve record> 编号从 1 开始 <surface number> 是 <geometry> 部分的 <surfaces> 子部分中 <surface record> 编号 <surface record> 编号从 1 开始 <2D curve number> 是 <geometry> 部分的 <2D curves> 子部分中 <2D curve record> 编号 <2D curve record> 编号从 1 开始 <3D polygon number> 是 <geometry> 部分的 <3D polygons> 子部分中 <3D polygon record> 编号 <3D polygon record> 编号从 1 开始 <triangulation number> 是 <geometry> 部分的 <triangulations> 子部分中 <triangulation record> 编号 <triangulation record> 编号从 1 开始 <polygon on triangulation number> 是 <geometry> 部分的 <polygons on triangulations> 子部分中 <polygons on triangulations> 编号 <polygons on triangulations> 编号从 1 开始 <curve parameter minimal and maximal values>umin 和 umax 都是参数曲线的取值边界 : umin<=u<=umax <curve values for parameter minimal and maximal values> 根据参数 umin 和 umax 求得的曲 线 C 上的值 xmin,ymin,xmax,ymax, 即 (xmin, ymin)=c(umin),(xmax, ymax)=c (umax)

65 5.2 <vertex data> BNF 定义 : 详细说明 : <vertex data representation u parameter>u 的使用方法说明如下 : <vertex data representation data 1> 和参数 u 定义了三维曲线 C 上的点 V 的位置 参数 u 是曲线 C 上点 V 对应的参数 :C(u)=V <vertex data representation data 2> 和参数 u 定义了曲面上的二维曲线 C 上点 V 的位置 参数 u 是曲线 C 上点 V 对应的参数 :C(u)=V <vertex data representation data 3> 和参数 u 及 <vertex data representation v parameter>v 定义了曲面 S 上的点 V:S(u,v)=V <vertex data tolerance>t 定义如下所示 :

66 5.3 <edge data> BNF 定义 : 详细说明 : 标志位 <edge data same parameter flag>, <edge data same range flag>, <edge data degenerated flag> 有特别的用途 <edge data representation data 1> 表示一个三维曲线 ; <edge data representation data 2> 表示曲面上的一个二维曲线 ; <curve values for parameter minimal and maximal values> 只在 2 版本中使用 ; <edge data representation data 3> 表示闭合曲面上的一个二维曲线 ; <curve values for parameter minimal and maximal values> 只在 2 版本中使用 ; <edge data representation data 5> 表示一个三维的多段线 (3D polyline);

67 <edge data representation data 6> 表示三角剖分上一条多段线 ; <edge data tolerance> t 的定义如下所示 :

68 5.4 <face data> BNF 定义 : 详细说明 : <face data> 描述了面 F 的曲面 S 和三角剖分 T 曲面 S 可能为空 :<surface number>=0. <face data tolerance> t 的定义如下所示 : 标志位 <face data natural restriction flag> 有特别的用途

69 六 实例分析 OpenCascade 的 data 目录中的 face1.brep 文件 : DBRep_DrawableShape CASCADE Topology V1, (c) Matra-Datavision Locations Curve2ds Curves Polygon3D 0 PolygonOnTriangulations 0 Surfaces

70 Triangulations 0 TShapes 10 Ve e * Ve e * Ed 1e * Ve e * Ed 1e * Ve

71 e * Ed 1e * Ed 1e * Wi * Fa 0 1e * 显示结果如下图所示 :

72 Figure 1. Wireframe mode Figure 2. Shaded mode

73 七 结论 因为 OpenCascade 的 Brep 格式是自己的格式, 只用到了 ModelingData 模块, 不使用 DataExchange 模块, 可以作为数据交换的一种格式 八 参考资料 1. BNF 范式 : 2. BRep Format Description 3. OpenCascade source code

绘制OpenCascade中的曲线

绘制OpenCascade中的曲线 在 OpenSceneGraph 中绘制 OpenCascade 的曲线 Draw OpenCascade Geometry Curves in OpenSceneGraph eryar@163.com 摘要 Abstract: 本文简要说明 OpenCascade 中几何曲线的数据, 并将这些几何曲线在 OpenSceneGraph 中绘制出来 关键字 KeyWords:OpenCascade Geometry

More information

Topology Shapes of OpenCascade BRep

Topology Shapes of OpenCascade BRep Topology Shapes of OpenCascade BRep eryar@163.com 摘要 Abstract: 通过对 OpenCascade 中的 BRep 数据的读写, 理解边界表示法的概念及 实现 理解了拓朴形状的数据结构, 就对 ModelingData 模块有了清晰认识, 方便 OpenCascade 其他模块如 ModelingAlgorithms 和 Visiualization

More information

Topology and Geometry in OpenCascade

Topology and Geometry in OpenCascade Topology and Geometry in OpenCascade-Vertex eryar@163.com 摘要 Abstract: 本文简要介绍了几何造型中的边界表示法 ( BRep), 并结合程序说明 OpenCascade 中的边界表示的具体实现, 即拓朴与几何的联系 对具有几何信息的拓朴结构顶点 (vertex) 边(edge) 面(face) 进行了详细说明 本文只对顶点数据进行说明

More information

Move Component Object selection Component selection UV Maya Hotkeys editor Maya USING MAYA POLYGONAL MODELING 55

Move Component Object selection Component selection UV Maya Hotkeys editor Maya USING MAYA POLYGONAL MODELING 55 3 55 62 63 Move Component 63 70 72 73 73 Object selection Component selection UV Maya Hotkeys editor Maya 55 USING MAYA POLYGONAL MODELING Maya: Essentials Maya Essentials F8 Ctrl F9 Vertex/Face F9 F10

More information

Topology and Geometry in OpenCascade

Topology and Geometry in OpenCascade Topology and Geometry in OpenCascade-Edge eryar@163.com 摘要 Abstract: 本文简要介绍了几何造型中的边界表示法 ( BRep), 并结合程序说明 OpenCascade 中的边界表示的具体实现, 即拓朴与几何的联系 对具有几何信息的拓朴结构 顶点 (vertex) 边 (edge) 面 (face) 进行了详细说明 本文只对拓朴边数据进行说明,

More information

高等数学A

高等数学A 高等数学 A March 3, 2019 () 高等数学 A March 3, 2019 1 / 55 目录 1 函数 三要素 图像 2 导数 导数的定义 基本导数表 求导公式 Taylor 展开 3 积分 Newton-Leibniz 公式 () 高等数学 A March 3, 2019 2 / 55 函数 y = f(x) 函数三要素 1 定义域 2 值域 3 对应关系 () 高等数学 A March

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

科学计算的语言-FORTRAN95

科学计算的语言-FORTRAN95 科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造

More information

5 551 [3-].. [5]. [6]. [7].. API API. 1 [8-9]. [1]. W = W 1) y). x [11-12] D 2 2πR = 2z E + 2R arcsin D δ R z E = πr 1 + πr ) 2 arcsin

5 551 [3-].. [5]. [6]. [7].. API API. 1 [8-9]. [1]. W = W 1) y). x [11-12] D 2 2πR = 2z E + 2R arcsin D δ R z E = πr 1 + πr ) 2 arcsin 38 5 216 1 1),2) 163318) 163318). API. TE256 A doi 1.652/1-879-15-298 MODE OF CASING EXTERNA EXTRUSION BASED ON THE PRINCIPE OF VIRTUA WORK 1) ZHAO Wanchun,2) ZENG Jia WANG Tingting FENG Xiaohan School

More information

Visualization of Generic Surface

Visualization of Generic Surface Mesh Algorithm in OpenCascade eryar@163.com Abstract. Rendering a generic surface is a two steps process: first, computing the points that will form the mesh of the surface and then, send this mesh to

More information

ο HOH 104 31 O H 0.9568 A 1 1 109 28 1.01A ο Q C D t z = ρ z 1 1 z t D z z z t Qz = 1 2 z D z 2 2 Cl HCO SO CO 3 4 3 3 4 HCO SO 2 3 65 2 1 F0. 005H SiO0. 032M 0. 38 T4 9 ( K + Na) Ca 6 0 2 7 27 1-9

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

没有幻灯片标题

没有幻灯片标题 3. 曲面及其方程 一 曲面方程的概念 曲面的实例 : 水桶的表面 台灯的罩子面等. 曲面在空间解析几何中被看成是点的几何轨迹. 曲面方程的定义 : 如果曲面 S 与三元方程 (,, ) F 有下述关系 : (1) 曲面 S 上任一点的坐标都满足方程 ; () 不在曲面 S 上的点的坐标都不满足方程 ; 那么, 方程 (,, ) 而曲面 S 就叫做方程的图形. F 就叫做曲面 S 的方程, 一 曲面方程的概念

More information

11_complex_3d

11_complex_3d Computer Graphics 2016 11. Complex 3D Hongxin Zhang State Key Lab of CAD&CG, Zhejiang University 2016-12-12 General spline curves parametric curve basis functions P(t) = X i P i B i (t) t 2 [t 0,t 1 )

More information

! " # " " $ % " " # # " $ " # " #! " $ "!" # "# # #! &$! ( % "!!! )$ % " (!!!! *$ ( % " (!!!! +$ % " #! $!, $ $ $ $ $ $ $, $ $ "--. %/ % $ %% " $ "--/

!  #   $ %   # #  $  #  #!  $ ! # # # #! &$! ( % !!! )$ %  (!!!! *$ ( %  (!!!! +$ %  #! $!, $ $ $ $ $ $ $, $ $ --. %/ % $ %%  $ --/ "##$ "% "##& " "##( )$ "##%! ) "##$ * "##( "##$ "##(!!!!!!!!! ! " # " " $ % " " # # " $ " # " #! " $ "!" # "# # #! &$! ( % "!!! )$ % " (!!!! *$ ( % " (!!!! +$ % " #! $!, $ $ $ $ $ $ $, $ $ "--. %/ % $

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

Ps22Pdf

Ps22Pdf ) ,,, :,,,,,,, ( CIP) /. :, 2001. 9 ISBN 7-5624-2368-7.......... TU311 CIP ( 2001) 061075 ( ) : : : : * : : 174 ( A ) : 400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / / www. cqup.

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

. () ; () ; (3) ; (4).. () : P.4 3.4; P. A (3). () : P. A (5)(6); B. (3) : P.33 A (9),. (4) : P. B 5, 7(). (5) : P.8 3.3; P ; P.89 A 7. (6) : P.

. () ; () ; (3) ; (4).. () : P.4 3.4; P. A (3). () : P. A (5)(6); B. (3) : P.33 A (9),. (4) : P. B 5, 7(). (5) : P.8 3.3; P ; P.89 A 7. (6) : P. () * 3 6 6 3 9 4 3 5 8 6 : 3. () ; () ; (3) (); (4) ; ; (5) ; ; (6) ; (7) (); (8) (, ); (9) ; () ; * Email: huangzh@whu.edu.cn . () ; () ; (3) ; (4).. () : P.4 3.4; P. A (3). () : P. A (5)(6); B. (3) :

More information

17 Prelight Apply Color Paint Vertex Color Tool Prelight Apply Color Paint Vertex Color Tool 242 Apply Color, Prelight Maya Shading Smooth

17 Prelight Apply Color Paint Vertex Color Tool Prelight Apply Color Paint Vertex Color Tool 242 Apply Color, Prelight Maya Shading Smooth 17 Prelight 233 234 242 Apply Color Paint Vertex Color Tool Prelight Apply Color Paint Vertex Color Tool 242 Apply Color, Prelight Maya Shading Smooth Shade All Custom Polygon DisplayOptions Color in Shaded

More information

Topology and Geometry in OpenCascade

Topology and Geometry in OpenCascade Topology and Geometry in OpenCascade Location and Orientaion eryar@163.com 摘要 Abstract: 本文简要介绍了几何造型中的边界表示法 (BRep), 并结合程序说明 OpenCascade 中的边界表示的具体实现, 即拓朴与几何的联系 拓朴结构中的位置 (Location) 和朝向 (Orientation) 进行了详细说明

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

ϕ ϕ R V = 2 2 314 6378 1668 0 T =. 24 = 2 R cos32 33931 V = = = 1413. 68 32 T 24 2 R cos90 V = = 0 90 T ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ 1

More information

A Thesis in Applied Mathematics Surface of second degree in 3-Minkowski space b Sun Yan Supervisor: Professor Liu Huili Northeastern Universit Decembe

A Thesis in Applied Mathematics Surface of second degree in 3-Minkowski space b Sun Yan Supervisor: Professor Liu Huili Northeastern Universit Decembe UDC Minkowski 3 4..7 3 A Thesis in Applied Mathematics Surface of second degree in 3-Minkowski space b Sun Yan Supervisor: Professor Liu Huili Northeastern Universit December 3 : - I - Minkowski Minkowski

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

高级计算机图形学

高级计算机图形学 高级计算机图形学 讲授 : 董兰芳研究方向 : 科学计算可视化图形 图像处理模式识别 Telephone:0551-3603484 Email:lfdong@ustc.edu.cn Homepage: http://staff.ustc.edu.cn/~lfdong 中国科学技术大学视觉计算与可视化实验室 1 第四章几何对象和变换 (3)( 4.9 变换的级联 4.10 OpenGL 变换矩阵 4.11

More information

ebook14-4

ebook14-4 4 TINY LL(1) First F o l l o w t o p - d o w n 3 3. 3 backtracking parser predictive parser recursive-descent parsing L L ( 1 ) LL(1) parsing L L ( 1 ) L L ( 1 ) 1 L 2 L 1 L L ( k ) k L L ( 1 ) F i r s

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

STL of Open Cascade Data Exchange

STL of Open Cascade Data Exchange Open Cascade Data Exchange --- STL eryar@163.com 摘要 Abstract: 介绍了三维数据交换格式 STL 的组成, 以及 Open Cascade 中对 STL 的读写 并将 Open Cascade 读进来的 STL 的三角面片在 OpenSceneGraph 中显示 关键字 Key Words:STL, Open Cascade, OpenSceneGraph,

More information

untitled

untitled 1 2 3 4 5 6 1 NURBS 3ds max 4 NURBS NURBS NURBS 3 Patch Mesh NURBS NURBS NURBS NURBS 4 NURBS 1.1.1 NURBS NURBS NURBS 3ds max 4 Create 1.1 10 1.1 NURBS 001.max 1 Create Sphere 1.2 2 1.2 2 Modify 3 1 NURBS

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

J = m i r 2 i i ϕ 1 = Rg R 2πR R T = = 2π = 84. 4 min ( 1) g 1 T = 2π m / k k T = 2π m/ k = 2π R / g = 84. 4min ( 2) T = 2π l / g ( 3) / 0 20 40 60 80 100 120 /Pa 600.66 2338.1

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

PowerPoint Presentation

PowerPoint Presentation Stress and Equilibrium mi@seu.edu.cn Outline Bod and Surface Forces( 体力与面力 ) raction/stress Vector( 应力矢量 ) Stress ensor ( 应力张量 ) raction on Oblique Planes( 斜面上的应力 ) Principal Stresses and Directions( 主应力与主方向

More information

e bug 0 x=0 y=5/x 0 Return 4 2

e bug 0 x=0 y=5/x 0 Return 4 2 e 1 4 1 4 4.1 4.2 4.3 4.4 4.5 e 2 4.1 bug 0 x=0 y=5/x 0 Return 4 2 e 3 4 3 e 4 (true) (false) 4 4 e 5 4 5 4.2 1 G= V E V={n1,n2,,n m } E={e1,e2,,e p } e k ={n i,n j }, n i,n j V e 6 4.2 4 6 1 e 3 n 1 e

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

untitled

untitled 料 2-1 料 料 x, y, z 料 不 不 料濾 料 不 料 料 不 料 錄 料 2-1 a 料 2-1 b 2003 a 料 b 料 2-1 料 2003 料 料 行 料濾 料亂 濾 料 料 滑 料 理 料 2001 料 兩 理 料 不 TIN, Triangular Irregular Network 8 2-2 a 數 量 料 便 精 2003 料 行 理 料 立 狀 連 料 狀 立 料

More information

file:///E|/软件学习资料/HyperWorks/hyperworks学习捷径总结/Hypermesh总结——几何清理篇.txt

file:///E|/软件学习资料/HyperWorks/hyperworks学习捷径总结/Hypermesh总结——几何清理篇.txt 1 geometry clean 中 出 现 的 黄 色 边 界 线 表 示 什 么 意 思? 表 示 共 享 边, 三 个 或 者 三 个 以 上 的 面 共 同 的 边 界 2 HM 中 有 什 么 工 具 可 以 补 面 的? edit surface->surface filler 除 了 edit surface->surface filler 外, 还 可 以 用 spline,drag,sweep

More information

数字带通 带阻 高通滤波器的设计 把一个归一化原型模拟低通滤波器变换成另一个所需类型的模拟滤波器, 再将其数字化 直接从模拟滤波器通过一定的频率变换关系完成所需类型数字滤波器的设计 先设计低通型的数字滤波器, 再用数字频率变化方法将其转换成所需类型数字滤波器

数字带通 带阻 高通滤波器的设计 把一个归一化原型模拟低通滤波器变换成另一个所需类型的模拟滤波器, 再将其数字化 直接从模拟滤波器通过一定的频率变换关系完成所需类型数字滤波器的设计 先设计低通型的数字滤波器, 再用数字频率变化方法将其转换成所需类型数字滤波器 数字带通 带阻 高通滤波器的设计 把一个归一化原型模拟低通滤波器变换成另一个所需类型的模拟滤波器, 再将其数字化 直接从模拟滤波器通过一定的频率变换关系完成所需类型数字滤波器的设计 先设计低通型的数字滤波器, 再用数字频率变化方法将其转换成所需类型数字滤波器 模拟原型方法 : 模拟低通 - 模拟带通 H ( j) H ( j) 3 3 3 模拟原型方法 : 模拟低通 - 模拟带通 H ( j) 模拟低通

More information

第七章 空间解析几何与向量代数

第七章  空间解析几何与向量代数 第七章空间解析几何与向量代数 7. 空间直角坐标系 7. 向量及其加减法 向量与数的乘法 一 判断题. 点 (-,-,-) 是在第八卦限. 任何向量都有确定的方向. 任二向量,, 若. 则 同向. 若二向量, 满足关系, 则, 同向. 若二向量, 满足关系, 则, 反向 6. 若 c, 则 c 7. 向量, 满足, 则, 同向 二 填空题. 点 (,,-) 关于坐标原点对称的点是. 点 (,,-)

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

试卷

试卷 竞赛试卷 ( 数学专业 参考答案 一 (5 分 在仿射坐标系中 求过点 M ( 与平面 :3x y + z 平行 且与 x y 3 z 直线 l : 相交的直线 l 的方程 4 解法一 : 先求 l 的一个方向向量 X Y Z 因为 l 过点 M 且 l 与 l 相交 所以有 4 X 3 - Y ( Z..4 分 即 X + Y Z...3 分 又因为 l 与 平行 所以有 联立上述两个方程解得 :

More information

ebook 165-5

ebook 165-5 3 5 6 7 8 9 [ 3. 3 ] 3. 3 S Q L S Q 4. 21 S Q L S Q L 4 S Q 5 5.1 3 ( ) 78 5-1 3-8 - r e l a t i o n t u p l e c a r d i n a l i t y a t t r i b u t e d e g r e e d o m a i n primary key 5-1 3 5-1 S #

More information

Gerotor Motors Series Dimensions A,B C T L L G1/2 M G1/ A 4 C H4 E

Gerotor Motors Series Dimensions A,B C T L L G1/2 M G1/ A 4 C H4 E Gerotor Motors Series Size CC-A Flange Options-B Shaft Options-C Ports Features 0 0 5 5 1 0 1 0 3 3 0 0 SAE A 2 Bolt - (2) 4 Bolt Magneto (4) 4 Bolt Square (H4) 1.0" Keyed (C) 25mm Keyed (A) 1.0' 6T Spline

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

-2 4 - cr 5 - 15 3 5 ph 6.5-8.5 () 450 mg/l 0.3 mg/l 0.1 mg/l 1.0 mg/l 1.0 mg/l () 0.002 mg/l 0.3 mg/l 250 mg/l 250 mg/l 1000 mg/l 1.0 mg/l 0.05 mg/l 0.05 mg/l 0.01 mg/l 0.001 mg/l 0.01 mg/l () 0.05 mg/l

More information

Gerolor Motors Series Dimensions A,B C T L L G1/2 M8 G1/ A 4 C H4 E

Gerolor Motors Series Dimensions A,B C T L L G1/2 M8 G1/ A 4 C H4 E Gerolor Motors Series Size CC-A Flange Options-B Shaft Options-C Ports Features 0 0 12 12 1 1 0 0 2 2 31 31 0 0 SAE A 2 Bolt - (2) 4 Bolt Magneto (4) 4 Bolt Square (H4) 1.0" Keyed (C) 2mm Keyed (A) 1.0'

More information

Ps22Pdf

Ps22Pdf 2001 ( ) 063,, ( CIP ) : : : (100054, 8 ) : : (021) 73094, ( 010 )63223094 : : : 850 1168 1/ 32 : : : : 2001 2001 : : ISBN 7-113 - 04319-4/ U 1192 : 24 00,, : ( 021 ) 73169, ( 010) 63545969 : : : : : :

More information

CDWA Mapping. 22 Dublin Core Mapping

CDWA Mapping. 22 Dublin Core Mapping (version 0.23) 1 3... 3 3 3 5 7 10 22 CDWA Mapping. 22 Dublin Core Mapping. 24 26 28 30 33 2 3 X version 0.2 ( ) 4 Int VarcharText byte byte byte Id Int 10 Management Main Code Varchar 30 Code Original

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO Car DVD New GUI IR Flow User Manual V0.1 Jan 25, 2008 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com Important Notice SUNPLUS

More information

三維空間之機械手臂虛擬實境模擬

三維空間之機械手臂虛擬實境模擬 VRML Model of 3-D Robot Arm VRML Model of 3-D Robot Arm MATLAB VRML MATLAB Simulink i MATLAB Simulink V-Realm Build Joystick ii Abstract The major purpose of this thesis presents the procedure of VRML

More information

CGAL的安装编译

CGAL的安装编译 CGAL 的安装编译 eryar@163.com 关键字 Key Word:CGAL, C++, Delaunay Triangulation, Voronoi diagram, 一 引言 Introduction CGAL, Computational Geometry Algorithms Library, 计算几何算法库 设计目标是以 C++ 库的形式提供方便 高效 可靠的几何算法 CGAL

More information

第三讲 空间解析几何与向量代数

第三讲  空间解析几何与向量代数 第 三 讲 空 间 解 析 几 何 与 向 量 代 数 3.. 向 量 代 数. 数 量 积 ( 内 积 ): a b = a b cos θ; θ 是 ab, 之 间 的 夹 角. 向 量 积 ( 外 积 ): a b = a b sin θ; a b a, a b b, 构 成 右 手 系 a b( 含 共 线 ) a b = ; a b a b = aba,, b 3. 坐 标 表 示 : ab

More information

B-Spline Curve Library in Open Cascade

B-Spline Curve Library in Open Cascade B-Spline Curve Library in Open Cascade Open Cascade 中的 B 样条曲线库 eryar@163.com 摘要 Abstract: 简要介绍 Open Cascade 中的 B 样条曲线库 BSplCLib 的使用方法, 并且结合源程序来对 Open Cascade 中的 B 样条曲线的组成部分如节点矢量 重复度等概念进行介绍, 以及通过对计算 B 样条基函数的算法进行分析,

More information

iml88-0v C / 8W T Tube EVM - pplication Notes. IC Description The iml88 is a Three Terminal Current Controller (TTCC) for regulating the current flowi

iml88-0v C / 8W T Tube EVM - pplication Notes. IC Description The iml88 is a Three Terminal Current Controller (TTCC) for regulating the current flowi iml88-0v C / 8W T Tube EVM - pplication Notes iml88 0V C 8W T Tube EVM pplication Notes Table of Content. IC Description.... Features.... Package and Pin Diagrams.... pplication Circuit.... PCB Layout

More information

2. 读 课 文, 填 空 : (1) 树 上 垂 挂 着 择 怎 侉 (2) 孔 雀 好 像 美 人 拖 着 (3) 象 身 上 刺 着, 耳 朵 上 戴 着, 脖 子 上 系 着 (4) 象 主 人 敲 着, 象 小 姐 踩 着 一 摇 一 晃 的 (5) 小 松 鼠 歪 着, 朝 你 挤 眉

2. 读 课 文, 填 空 : (1) 树 上 垂 挂 着 择 怎 侉 (2) 孔 雀 好 像 美 人 拖 着 (3) 象 身 上 刺 着, 耳 朵 上 戴 着, 脖 子 上 系 着 (4) 象 主 人 敲 着, 象 小 姐 踩 着 一 摇 一 晃 的 (5) 小 松 鼠 歪 着, 朝 你 挤 眉 8. 印 度 奇 观 星 期 一 1. 写 一 写 : 幻 盆 妨 露 丛 裙 牙 松 49 2. 读 课 文, 填 空 : (1) 树 上 垂 挂 着 择 怎 侉 (2) 孔 雀 好 像 美 人 拖 着 (3) 象 身 上 刺 着, 耳 朵 上 戴 着, 脖 子 上 系 着 (4) 象 主 人 敲 着, 象 小 姐 踩 着 一 摇 一 晃 的 (5) 小 松 鼠 歪 着, 朝 你 挤 眉 弄 眼

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information

ebook122-3

ebook122-3 3 Verilog Verilog HDL Ve r i l o g 3.1 Verilog HDL ( i d e n t i f i e r ) $ ( C o u n t COUNT _ R 1 _ D 2 R 56 _ 68 F I V E $ / / C o u n t (escaped identifier ) \ ( ) \ 7400 \.*.$ \{******} \ ~Q \O u

More information

(Microsoft Word - Motion Program \270\305\264\272\276\363 \307\245\301\366 \271\327 \270\361\302\367.doc)

(Microsoft Word - Motion Program \270\305\264\272\276\363 \307\245\301\366 \271\327 \270\361\302\367.doc) : TBFAT-G5MP-MN004-11 1 GX Series PLC Program Manual 2 GX Series PLC Program Manual Contents Contents...3 1... 1-1 1.1... 1-2 1.2... 1-3 1.2.1... 1-3 1.2.2... 1-4 1.2.3... 1-4 1.2.4... 1-6 1.3... 1-7 1.3.1...

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

untitled

untitled 2006 6 Geoframe Geoframe 4.0.3 Geoframe 1.2 1 Project Manager Project Management Create a new project Create a new project ( ) OK storage setting OK (Create charisma project extension) NO OK 2 Edit project

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

<4D6963726F736F667420576F7264202D2032303037C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63>

<4D6963726F736F667420576F7264202D2032303037C4EAC6D5CDA8B8DFB5C8D1A7D0A3D5D0C9FAC8ABB9FACDB3D2BBBFBCCAD4CEC4BFC6D7DBBACDCAD4BEEDBCB0B4F0B0B82DD6D8C7ECBEED2E646F63> 2007 年 普 通 高 等 学 校 招 生 全 国 统 一 考 试 ( 重 庆 卷 ) 文 综 试 卷 第 一 部 分 本 部 分 共 35 题, 每 题 4 分, 共 140 分 在 每 题 给 出 的 四 个 选 项 中, 只 有 一 项 最 符 合 题 目 的 要 求 的 读 图 1, 回 答 1-3 题 1. 某 两 洲 面 积 之 和 与 某 大 洋 面 积 十 分 接 近, 它 们 是

More information

Microsoft Word - xxds fy.doc

Microsoft Word - xxds  fy.doc , 5, ;,,,,,, ; ; 4,,, ; () 1345, 2,,,,,,,, 2014 2 1 1 11 1 111 1 112 2 113 Cramer 3 12 3 121 3 122 4 123 4 13 5 131 5 132 13 133 13 134 Cramer 14 135 16 14 17 15 20 16 () 27 2 30 21 31 211 31 212 31 213

More information

<4D6963726F736F667420576F7264202D203938ABFCA6D2BEFAA576ACE3A873A5CEB8D5A8F7A977BD5A2E646F63>

<4D6963726F736F667420576F7264202D203938ABFCA6D2BEFAA576ACE3A873A5CEB8D5A8F7A977BD5A2E646F63> H98231 考 ( 一 )-98-006 大 學 入 學 考 試 中 心 指 定 科 目 考 試 研 究 用 試 卷 歷 史 考 科 - 作 答 注 意 事 項 - 考 試 時 間 : 八 十 分 鐘 題 型 題 數 : 單 選 題 共 31 題 多 選 題 共 4 題 題 組 題 共 5 題 非 選 題 共 4 大 題 作 答 方 式 : 選 擇 題 請 用 2B 鉛 筆 在 答 案 卡 上 作

More information

作者 : 闫浩 ( 年 月 段弧 标 (B f ( d d ( N ( M 其中 ( M ( N 分别表示 M N 的 坐 f ( d d ( N ( M : 其中 ( M ( N 分别表示 M N 的 坐 标 其中 (C f ( ds ds 弧长 ( f ( d f ( d = d d d e c

作者 : 闫浩 ( 年 月 段弧 标 (B f ( d d ( N ( M 其中 ( M ( N 分别表示 M N 的 坐 f ( d d ( N ( M : 其中 ( M ( N 分别表示 M N 的 坐 标 其中 (C f ( ds ds 弧长 ( f ( d f ( d = d d d e c 作者 : 闫浩 ( 年 月 微积分 B( 第五次习题课答案 ( 第十二周 一 第二型曲线 曲面积分 三大公式. 计算下列曲线积分 ( 设有向折线 为 ( A cos d si d 解 ( 方法 cos d si d AB cos ( 方法 用 Gree 定理方法 : cos d si d cos ABCA B ( C ( 的两段线段构成 计算 d si si d BC cos d si d cos

More information

untitled

untitled HELAVIA standard grommets DA in black polychloroprene rubber (Neoprene) -30 to +90 C HELAVIA Dimensions (mm) Art. N. A B C D F1 F2 DA 20/65/10 0252 0001 010 100 2 6,5 11 1 2 2 DA 20/65/15 0252 0002 010

More information

Microsoft Word - 301E高温样本封面.doc

Microsoft Word - 301E高温样本封面.doc 无锡卓尔阀业有限公司 301E 三偏心高温 蝶阀 Triple Eccentric High Temperature Butterfly Valves STANDARD SPECIFICATION 301E GENERAL 301E Triple Eccentric High Temperature Butterfly valve 301E Triple eccentric high temperature

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

untitled

untitled arctan lim ln +. 6 ( + ). arctan arctan + ln 6 lim lim lim y y ( ln ) lim 6 6 ( + ) y + y dy. d y yd + dy ln d + dy y ln d d dy, dy ln d, y + y y dy dy ln y+ + d d y y ln ( + ) + dy d dy ln d dy + d 7.

More information

Microsoft Word - 宜中電子報-第11期-1031120.doc

Microsoft Word - 宜中電子報-第11期-1031120.doc 宜 中 電 子 報 第 11 期 1 / 18 TOP 宜 中 電 子 報 中 華 民 國 102 年 3 月 創 刊 中 華 民 國 103 年 11 月 第 11 期 發 行 人 : 王 校 長 垠 編 輯 : 圖 書 館 專 文 榮 譽 榜 活 動 報 導 校 務 宣 導 經 驗 分 享 宜 中 風 采 專 文 宜 中 特 色 領 航 作 者 : 校 長 王 垠 65 週 年 運 動 會 剛

More information

coverage2.ppt

coverage2.ppt Satellite Tool Kit STK/Coverage STK 82 0715 010-68745117 1 Coverage Definition Figure of Merit 2 STK Basic Grid Assets Interval Description 3 Grid Global Latitude Bounds Longitude Lines Custom Regions

More information

koji-13.dvi

koji-13.dvi 26 13 1, 2, 3, 4, 5, 6, 7 1 18 1. xy D D = {(x, y) y 2 x 4 y 2,y } x + y2 dxdy D 2 y O 4 x 2. xyz D D = {(x, y, z) x 1, y x 2, z 1, y+ z x} D 3. [, 1] [, 1] (, ) 2 f (1)

More information

d y dy P x Q x y 0. dx dx d d P x Q x C C 1y1 y dx dx d d P x Q x C 1y 1 dx dx d d P x Q x C y 0. dx dx d x 1dx F. ox1 dt dt d x1 1dx1 x 0 1 F 1 dt dt d x 1dx x 0 F dt dt d y 1dy y F 0 1 F1 y x1 x. dt

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

Persuasive Techniques (motorcycle helmet)

Persuasive Techniques  (motorcycle helmet) M O D E A T H E E L E M E N T S O F A N A R G U M E N T 1n t h l s t e s t i m o n y g iv e n b e f o r e t h e M a ry l a n d Se n a t e t h e s p e a ke r m a ke s a s t r o n g c l a i m a b o u t t

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

ii

ii i ii iii iv Abstract This senior project is to use compute simulation to accomplish analysis and synthesis of Cam. The object of these focuses on three major partsthe first one is to establish the mathematical

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

tbjx0033ZW.PDF

tbjx0033ZW.PDF 1998 20 2000 6 1949 4 20 4 21 22 2 22 1 2 1 Ad hu Bqi n qi n C s s i Dqi n ji n 2 A B C D 22 22 20 24 30 21 5 35 2/3 23 21 (11) 35 (12) (13) 23 (14) 21 22 (15) 1 A B C D 2 A B C D 3 A B C D 4 A 20 B

More information

:,,,,,,,,,,,,, :,,,! ,, ( ) ;, ( ),,, ( tu n) ( ), ( ), ( ),,, ( ),,,, ( ), : ; 1993, 15 400,, 1973, 3 ; 1977, 1, ;,, 1 ; 1995 12 6 :,,,,,,,,,,, :,,, :??,, S (,, ), ( ) ( ),,, :,,,,,,, : ( ), ( ), ( ),

More information

ebook45-5

ebook45-5 5 S Q L SQL Server 5.1 5-1 SQL Server 5-1 A B S A C O S A S I N ATA N AT N 2 C E I L I N G C O S C O T D E G R E E S E X P F L O O R L O G L O G 10 P I P O W E R R A D I A N S R A N D R O U N D S I G N

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

幻灯片 1

幻灯片 1 次 世 代 手 游 的 探 讨 Speaker Kevin BY Art Director & idreamsky 第 一 部 分 次 世 代 手 游 的 探 索 和 制 作 1.Shader 2.Mesh 3.Animation 4.Lightmap 1.Shader 1.1Normal Map( 法 线 贴 图 ) 1.2Specular Mapping( 高 光 贴 图 ) 1.3Cube Map(

More information

2 g g g g g g g

2 g g g g g g g pjt@cis cis.pku.edu.cn 2 2224 2003-09 09-10 2 g g g g g g g 3 4 5 1.1 ; ;, \ \ \ \ ; ; 1.1 6 1.1 7 No illumination Constant colors Polygons Parallel light Diffuse reflection Free-form surfaces 1.1 Parallel

More information

Ps22Pdf

Ps22Pdf ( ) ( ) 2006 ( C I P ) /. - :, 2002. 6 ( ) ISBN7-80176 - 020-4... - -. I207. 62 CIP ( 2002 ) 035654 ( ) : : : ( 100089) 1 : : : 8501168 1 /32 : 2, 030 : 78. 125 : 2002 6 1 : 2006 5 3 : ISBN7-80176 - 020-4

More information

标题

标题 648 江 苏 农 业 学 报 (Jiangsu J. of Agr. Sci. ),2013,29(3):648 ~ 653 h ttp: / / w w w. jsn y x b.c o m 王 摇 丹, 孙 摇 蕾, 孙 家 正, 等. 桑 葚 冻 结 过 程 中 的 温 度 变 化 特 性 [J]. 江 苏 农 业 学 报,2013,29(3):648 鄄 653. doi:10. 3969

More information

例題. y = x x = 0 y = x 0 li 0 li 0 li = y = x x = 0 = f x) x = a x = a 2

例題. y = x x = 0 y = x 0 li 0 li 0 li = y = x x = 0 = f x) x = a x = a 2 y = x x = 0 y 2 0 2 x Figure : y = x f x) x = a f x) x = a f a) dy dx x=a f a) x a f x) f a) x a f a + ) f a) f x) x = a f x) x = a y = x x = 0 例題. y = x x = 0 y = x 0 li 0 li 0 li = y = x x = 0 = f x)

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

6 2016/5/ /6/19 z B (HDM) (CDM) CDM (Λ = 0) (k = +1) Friedmann ( ) dr 2 = Rmax R R 2 (4.1) dθ R(θ) = R max 2 t(θ) = R max 2c (1 cos θ), (4.2) (θ

6 2016/5/ /6/19 z B (HDM) (CDM) CDM (Λ = 0) (k = +1) Friedmann ( ) dr 2 = Rmax R R 2 (4.1) dθ R(θ) = R max 2 t(θ) = R max 2c (1 cos θ), (4.2) (θ 6 206/5/9 206/6/9 z B (HDM) (CDM) CDM (Λ = 0) (k = +) Friedmann ( ) dr 2 = Rmax R R 2 (4.) dθ R(θ) = R max 2 t(θ) = R max 2c ( cos θ), (4.2) (θ sin θ); (4.3) R(θ) θ = 0 θ = π (turn-around time) θ = 2π

More information