0023948: Wrong intersection between a surface of revolution and a plane.
[occt.git] / src / StepGeom / StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve.cxx
1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #include <StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve.ixx>
15
16 #include <StepGeom_BSplineCurveWithKnots.hxx>
17
18 #include <StepGeom_RationalBSplineCurve.hxx>
19
20
21 StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve ()  {}
22
23 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::Init(
24         const Handle(TCollection_HAsciiString)& aName,
25         const Standard_Integer aDegree,
26         const Handle(StepGeom_HArray1OfCartesianPoint)& aControlPointsList,
27         const StepGeom_BSplineCurveForm aCurveForm,
28         const StepData_Logical aClosedCurve,
29         const StepData_Logical aSelfIntersect)
30 {
31
32         StepGeom_BSplineCurve::Init(aName, aDegree, aControlPointsList, aCurveForm, aClosedCurve, aSelfIntersect);
33 }
34
35 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::Init(
36         const Handle(TCollection_HAsciiString)& aName,
37         const Standard_Integer aDegree,
38         const Handle(StepGeom_HArray1OfCartesianPoint)& aControlPointsList,
39         const StepGeom_BSplineCurveForm aCurveForm,
40         const StepData_Logical aClosedCurve,
41         const StepData_Logical aSelfIntersect,
42         const Handle(StepGeom_BSplineCurveWithKnots)& aBSplineCurveWithKnots,
43         const Handle(StepGeom_RationalBSplineCurve)& aRationalBSplineCurve)
44 {
45         // --- classe own fields ---
46         bSplineCurveWithKnots = aBSplineCurveWithKnots;
47         rationalBSplineCurve = aRationalBSplineCurve;
48         // --- classe inherited fields ---
49         StepGeom_BSplineCurve::Init(aName, aDegree, aControlPointsList, aCurveForm, aClosedCurve, aSelfIntersect);
50 }
51
52
53 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::Init(
54         const Handle(TCollection_HAsciiString)& aName,
55         const Standard_Integer aDegree,
56         const Handle(StepGeom_HArray1OfCartesianPoint)& aControlPointsList,
57         const StepGeom_BSplineCurveForm aCurveForm,
58         const StepData_Logical aClosedCurve,
59         const StepData_Logical aSelfIntersect,
60         const Handle(TColStd_HArray1OfInteger)& aKnotMultiplicities,
61         const Handle(TColStd_HArray1OfReal)& aKnots,
62         const StepGeom_KnotType aKnotSpec,
63         const Handle(TColStd_HArray1OfReal)& aWeightsData)
64 {
65         // --- classe inherited fields ---
66
67         StepGeom_BSplineCurve::Init(aName, aDegree, aControlPointsList, aCurveForm, aClosedCurve, aSelfIntersect);
68
69         // --- ANDOR componant fields ---
70
71         bSplineCurveWithKnots = new StepGeom_BSplineCurveWithKnots();
72         bSplineCurveWithKnots->Init(aName, aDegree, aControlPointsList, aCurveForm, aClosedCurve, aSelfIntersect, aKnotMultiplicities, aKnots, aKnotSpec);
73
74         // --- ANDOR componant fields ---
75
76         rationalBSplineCurve = new StepGeom_RationalBSplineCurve();
77         rationalBSplineCurve->Init(aName, aDegree, aControlPointsList, aCurveForm, aClosedCurve, aSelfIntersect, aWeightsData);
78 }
79
80
81 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::SetBSplineCurveWithKnots(const Handle(StepGeom_BSplineCurveWithKnots)& aBSplineCurveWithKnots)
82 {
83         bSplineCurveWithKnots = aBSplineCurveWithKnots;
84 }
85
86 Handle(StepGeom_BSplineCurveWithKnots) StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::BSplineCurveWithKnots() const
87 {
88         return bSplineCurveWithKnots;
89 }
90
91 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::SetRationalBSplineCurve(const Handle(StepGeom_RationalBSplineCurve)& aRationalBSplineCurve)
92 {
93         rationalBSplineCurve = aRationalBSplineCurve;
94 }
95
96 Handle(StepGeom_RationalBSplineCurve) StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::RationalBSplineCurve() const
97 {
98         return rationalBSplineCurve;
99 }
100
101         //--- Specific Methods for AND classe field access ---
102
103
104 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::SetKnotMultiplicities(const Handle(TColStd_HArray1OfInteger)& aKnotMultiplicities)
105 {
106         bSplineCurveWithKnots->SetKnotMultiplicities(aKnotMultiplicities);
107 }
108
109 Handle(TColStd_HArray1OfInteger) StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::KnotMultiplicities() const
110 {
111         return bSplineCurveWithKnots->KnotMultiplicities();
112 }
113
114 Standard_Integer StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::KnotMultiplicitiesValue(const Standard_Integer num) const
115 {
116         return bSplineCurveWithKnots->KnotMultiplicitiesValue(num);
117 }
118
119 Standard_Integer StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::NbKnotMultiplicities () const
120 {
121         return bSplineCurveWithKnots->NbKnotMultiplicities();
122 }
123
124 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::SetKnots(const Handle(TColStd_HArray1OfReal)& aKnots)
125 {
126         bSplineCurveWithKnots->SetKnots(aKnots);
127 }
128
129 Handle(TColStd_HArray1OfReal) StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::Knots() const
130 {
131         return bSplineCurveWithKnots->Knots();
132 }
133
134 Standard_Real StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::KnotsValue(const Standard_Integer num) const
135 {
136         return bSplineCurveWithKnots->KnotsValue(num);
137 }
138
139 Standard_Integer StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::NbKnots () const
140 {
141         return bSplineCurveWithKnots->NbKnots();
142 }
143
144 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::SetKnotSpec(const StepGeom_KnotType aKnotSpec)
145 {
146         bSplineCurveWithKnots->SetKnotSpec(aKnotSpec);
147 }
148
149 StepGeom_KnotType StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::KnotSpec() const
150 {
151         return bSplineCurveWithKnots->KnotSpec();
152 }
153
154         //--- Specific Methods for AND classe field access ---
155
156
157 void StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::SetWeightsData(const Handle(TColStd_HArray1OfReal)& aWeightsData)
158 {
159         rationalBSplineCurve->SetWeightsData(aWeightsData);
160 }
161
162 Handle(TColStd_HArray1OfReal) StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::WeightsData() const
163 {
164         return rationalBSplineCurve->WeightsData();
165 }
166
167 Standard_Real StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::WeightsDataValue(const Standard_Integer num) const
168 {
169         return rationalBSplineCurve->WeightsDataValue(num);
170 }
171
172 Standard_Integer StepGeom_BSplineCurveWithKnotsAndRationalBSplineCurve::NbWeightsData () const
173 {
174         return rationalBSplineCurve->NbWeightsData();
175 }