0023024: Update headers of OCCT files
[occt.git] / src / BRepSweep / BRepSweep_Revol.cxx
CommitLineData
b311480e 1// Created on: 1993-06-25
2// Created by: Laurent BOURESCHE
3// Copyright (c) 1993-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
7fd59977 21
22
23#include <BRepSweep_Revol.ixx>
24#include <BRepSweep_Rotation.hxx>
25#include <Sweep_NumShape.hxx>
26
27#include <gp_Trsf.hxx>
28#include <Precision.hxx>
29//=======================================================================
30//function : BRepSweep_Revol
31//purpose :
32//=======================================================================
33
34BRepSweep_Revol::BRepSweep_Revol
35 (const TopoDS_Shape& S,
36 const gp_Ax1& Ax,
37 const Standard_Real D,
38 const Standard_Boolean C):
39 myRotation(S.Oriented(TopAbs_FORWARD),
40 NumShape(D),
41 Location(Ax,D),
42 Axe(Ax,D),
43 Angle(D),
44 C)
45{
46 Standard_ConstructionError_Raise_if
47 (Angle(D)<=Precision::Angular(),"BRepSweep_Revol::Constructor");
48}
49
50//=======================================================================
51//function : BRepSweep_Revol
52//purpose :
53//=======================================================================
54
55BRepSweep_Revol::BRepSweep_Revol
56 (const TopoDS_Shape& S,
57 const gp_Ax1& Ax,
58 const Standard_Boolean C):
59 myRotation(S.Oriented(TopAbs_FORWARD),
c6541a0c
D
60 NumShape(2*M_PI),
61 Location(Ax,2*M_PI),
62 Axe(Ax,2*M_PI),
63 Angle(2*M_PI),
7fd59977 64 C)
65
66{
67}
68
69
70//=======================================================================
71//function : Shape
72//purpose :
73//=======================================================================
74
75TopoDS_Shape BRepSweep_Revol::Shape()
76{
77 return myRotation.Shape();
78}
79
80
81//=======================================================================
82//function : Shape
83//purpose :
84//=======================================================================
85
86TopoDS_Shape BRepSweep_Revol::Shape(const TopoDS_Shape& aGenS)
87{
88 return myRotation.Shape(aGenS);
89}
90
91
92//=======================================================================
93//function : FirstShape
94//purpose :
95//=======================================================================
96
97TopoDS_Shape BRepSweep_Revol::FirstShape()
98{
99 return myRotation.FirstShape();
100}
101
102
103//=======================================================================
104//function : FirstShape
105//purpose :
106//=======================================================================
107
108TopoDS_Shape BRepSweep_Revol::FirstShape(const TopoDS_Shape& aGenS)
109{
110 return myRotation.FirstShape(aGenS);
111}
112
113
114//=======================================================================
115//function : LastShape
116//purpose :
117//=======================================================================
118
119TopoDS_Shape BRepSweep_Revol::LastShape()
120{
121 return myRotation.LastShape();
122}
123
124
125//=======================================================================
126//function : LastShape
127//purpose :
128//=======================================================================
129
130TopoDS_Shape BRepSweep_Revol::LastShape(const TopoDS_Shape& aGenS)
131{
132 return myRotation.LastShape(aGenS);
133}
134
135
136//=======================================================================
137//function : NumShape
138//purpose :
139//=======================================================================
140
141Sweep_NumShape BRepSweep_Revol::NumShape(const Standard_Real D)const
142{
143 Sweep_NumShape N;
c6541a0c 144 if (Abs(Angle(D) - 2*M_PI)<=Precision::Angular()){
7fd59977 145 N.Init(2,TopAbs_EDGE,Standard_True,
146 Standard_False,Standard_False);
147 }
148 else{
149 N.Init(2,TopAbs_EDGE);
150 }
151 return N;
152}
153
154
155//=======================================================================
156//function : Location
157//purpose :
158//=======================================================================
159
160TopLoc_Location BRepSweep_Revol::Location(const gp_Ax1& Ax,
161 const Standard_Real D)const
162{
163 gp_Trsf gpt;
164 gpt.SetRotation(Axe(Ax,D),Angle(D));
165 TopLoc_Location L(gpt);
166 return L;
167}
168
169
170//=======================================================================
171//function : Axe
172//purpose :
173//=======================================================================
174
175gp_Ax1 BRepSweep_Revol::Axe(const gp_Ax1& Ax, const Standard_Real D)const
176{
177 gp_Ax1 A = Ax;
178 if ( D < 0. ) A.Reverse();
179 return A;
180}
181
182
183//=======================================================================
184//function : Angle
185//purpose :
186//=======================================================================
187
188Standard_Real BRepSweep_Revol::Angle(const Standard_Real D)const
189{
190 Standard_Real d = Abs(D);
c6541a0c
D
191 while(d>(2*M_PI + Precision::Angular())){
192 d = d - 2*M_PI;
7fd59977 193 }
194 return d;
195}
196
197
198//=======================================================================
199//function : Angle
200//purpose :
201//=======================================================================
202
203Standard_Real BRepSweep_Revol::Angle()const
204{
205 return myRotation.Angle();
206}
207
208
209//=======================================================================
210//function : Axe
211//purpose :
212//=======================================================================
213
214gp_Ax1 BRepSweep_Revol::Axe()const
215{
216 return myRotation.Axe();
217}
218
219