0023024: Update headers of OCCT files
[occt.git] / src / BRepPrim / BRepPrim_Revolution.cxx
1 // Created on: 1992-11-06
2 // Created by: Remi LEQUETTE
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21
22
23
24 #include <BRepPrim_Revolution.ixx>
25
26 #include <Precision.hxx>
27 #include <Geom_SurfaceOfRevolution.hxx>
28
29 //=======================================================================
30 //function : BRepPrim_Revolution
31 //purpose  : 
32 //=======================================================================
33
34 BRepPrim_Revolution::BRepPrim_Revolution(const gp_Ax2& A, 
35                                          const Standard_Real VMin,
36                                          const Standard_Real VMax,
37                                          const Handle(Geom_Curve)& M,
38                                          const Handle(Geom2d_Curve)& PM) :
39        BRepPrim_OneAxis(BRepPrim_Builder(),A,VMin,VMax),
40        myMeridian(M),
41        myPMeridian(PM)
42 {
43 }
44
45 //=======================================================================
46 //function : BRepPrim_Revolution
47 //purpose  : 
48 //=======================================================================
49
50 BRepPrim_Revolution::BRepPrim_Revolution(const gp_Ax2& A, 
51                                          const Standard_Real VMin,
52                                          const Standard_Real VMax) :
53        BRepPrim_OneAxis(BRepPrim_Builder(),A,VMin,VMax)
54 {
55 }
56
57 //=======================================================================
58 //function : Meridian
59 //purpose  : 
60 //=======================================================================
61
62 void BRepPrim_Revolution::Meridian(const Handle(Geom_Curve)& M,
63                                    const Handle(Geom2d_Curve)& PM)
64 {
65   myMeridian  = M;
66   myPMeridian = PM;
67 }
68
69 //=======================================================================
70 //function : MakeEmptyLateralFace
71 //purpose  : 
72 //=======================================================================
73
74 TopoDS_Face  BRepPrim_Revolution::MakeEmptyLateralFace() const
75 {
76   Handle(Geom_SurfaceOfRevolution) S =
77     new Geom_SurfaceOfRevolution(myMeridian,Axes().Axis());
78
79   TopoDS_Face F;
80   myBuilder.Builder().MakeFace(F,S,Precision::Confusion());
81   return F;
82 }
83
84 //=======================================================================
85 //function : MakeEmptyMeridianEdge
86 //purpose  : 
87 //=======================================================================
88
89 TopoDS_Edge  BRepPrim_Revolution::MakeEmptyMeridianEdge(const Standard_Real Ang) const 
90 {
91   TopoDS_Edge E;
92   Handle(Geom_Curve) C = Handle(Geom_Curve)::DownCast(myMeridian->Copy());
93   gp_Trsf T;
94   T.SetRotation(Axes().Axis(),Ang);
95   C->Transform(T);
96   myBuilder.Builder().MakeEdge(E,C,Precision::Confusion());
97   return E;
98 }
99
100 //=======================================================================
101 //function : MeridianValue
102 //purpose  : 
103 //=======================================================================
104
105 gp_Pnt2d  BRepPrim_Revolution::MeridianValue(const Standard_Real V) const 
106 {
107   return myPMeridian->Value(V);
108 }
109
110 //=======================================================================
111 //function : SetMeridianPCurve
112 //purpose  : 
113 //=======================================================================
114
115 void  BRepPrim_Revolution::SetMeridianPCurve(TopoDS_Edge& E, 
116                                              const TopoDS_Face& F) const 
117 {
118   myBuilder.Builder().UpdateEdge(E,myPMeridian,F,Precision::Confusion());
119 }
120