Integration of OCCT 6.5.0 from SVN
[occt.git] / src / BRepApprox / BRepApprox_ApproxLineGen.gxx
CommitLineData
7fd59977 1// File: BRepApprox_ApproxLineGen.gxx
2// Created: Thu Jul 20 15:25:47 1995
3// Author: Modelistation
4// <model@meteox>
5
6#include <gp_Pnt2d.hxx>
7
8//=======================================================================
9//function : BRepApprox_ApproxLineGen
10//purpose :
11//=======================================================================
12
13BRepApprox_ApproxLineGen::BRepApprox_ApproxLineGen
14 (const TheCurve& CurveXYZ,
15 const TheCurve2d& CurveUV1,
16 const TheCurve2d& CurveUV2)
17{
18 curvxyz = CurveXYZ;
19 curvuv1 = CurveUV1;
20 curvuv2 = CurveUV2;
21}
22
23
24//=======================================================================
25//function : BRepApprox_ApproxLineGen
26//purpose :
27//=======================================================================
28
29BRepApprox_ApproxLineGen::BRepApprox_ApproxLineGen
30 (const Handle(IntSurf_LineOn2S)& lin,
31 const Standard_Boolean )
32 :linon2s(lin)
33{
34}
35
36//=======================================================================
37//function : NbPnts
38//purpose :
39//=======================================================================
40
41Standard_Integer BRepApprox_ApproxLineGen::NbPnts() const
42{
43 if(!curvxyz.IsNull())
44 return(curvxyz->NbPoles());
45 if(!curvuv1.IsNull())
46 return(curvuv1->NbPoles());
47 if(!curvuv2.IsNull())
48 return(curvuv2->NbPoles());
49 return(linon2s->NbPoints());
50}
51
52//=======================================================================
53//function : Point
54//purpose :
55//=======================================================================
56
57IntSurf_PntOn2S BRepApprox_ApproxLineGen::Point
58 (const Standard_Integer Index)
59{
60 if(!linon2s.IsNull()) {
61 if(linon2s->NbPoints()) {
62 return(linon2s->Value(Index));
63 }
64 }
65 gp_Pnt2d P1,P2;
66 gp_Pnt P;
67 if(!curvxyz.IsNull())
68 P = curvxyz->Pole(Index);
69 if(!curvuv1.IsNull())
70 P1 = curvuv1->Pole(Index);
71 if(!curvuv2.IsNull())
72 P2 = curvuv2->Pole(Index);
73
74 pnton2s.SetValue(P,
75 P1.X(),
76 P1.Y(),
77 P2.X(),
78 P2.Y());
79 return(pnton2s);
80}