0031687: Draw Harness, ViewerTest - extend command vrenderparams with option updating...
[occt.git] / src / IGESSolid / IGESSolid_Ellipsoid.cxx
1 // Created by: CKY / Contract Toubro-Larsen
2 // Copyright (c) 1993-1999 Matra Datavision
3 // Copyright (c) 1999-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 //--------------------------------------------------------------------
17 //--------------------------------------------------------------------
18
19 #include <gp_Dir.hxx>
20 #include <gp_GTrsf.hxx>
21 #include <gp_Pnt.hxx>
22 #include <gp_XYZ.hxx>
23 #include <IGESSolid_Ellipsoid.hxx>
24 #include <Standard_Type.hxx>
25
26 IMPLEMENT_STANDARD_RTTIEXT(IGESSolid_Ellipsoid,IGESData_IGESEntity)
27
28 IGESSolid_Ellipsoid::IGESSolid_Ellipsoid ()    {  }
29
30
31     void  IGESSolid_Ellipsoid::Init
32   (const gp_XYZ& aSize,   const gp_XYZ& aCenter,
33    const gp_XYZ& anXAxis, const gp_XYZ& anZAxis)
34 {
35   theSize   = aSize;
36   theCenter = aCenter;         // default (0,0,0)
37   theXAxis  = anXAxis;         // default (1,0,0)
38   theZAxis  = anZAxis;         // default (0,0,1)
39   InitTypeAndForm(168,0);
40 }
41
42     gp_XYZ  IGESSolid_Ellipsoid::Size () const
43 {
44   return theSize;
45 }
46
47     Standard_Real  IGESSolid_Ellipsoid::XLength () const
48 {
49   return theSize.X();
50 }
51
52     Standard_Real  IGESSolid_Ellipsoid::YLength () const
53 {
54   return theSize.Y();
55 }
56
57     Standard_Real  IGESSolid_Ellipsoid::ZLength () const
58 {
59   return theSize.Z();
60 }
61
62     gp_Pnt  IGESSolid_Ellipsoid::Center () const
63 {
64   return gp_Pnt(theCenter);
65 }
66
67     gp_Pnt  IGESSolid_Ellipsoid::TransformedCenter () const
68 {
69   if (!HasTransf()) return gp_Pnt(theCenter);
70   else
71     {
72       gp_XYZ tmp = theCenter;
73       Location().Transforms(tmp);
74       return gp_Pnt(tmp);
75     }
76 }
77
78     gp_Dir  IGESSolid_Ellipsoid::XAxis () const
79 {
80   return gp_Dir(theXAxis);
81 }
82
83     gp_Dir  IGESSolid_Ellipsoid::TransformedXAxis () const
84 {
85   if (!HasTransf()) return gp_Dir(theXAxis);
86   else
87     {
88       gp_XYZ tmp = theXAxis;
89       gp_GTrsf loc = Location();
90       loc.SetTranslationPart(gp_XYZ(0.,0.,0.));
91       loc.Transforms(tmp);
92       return gp_Dir(tmp);
93     }
94 }
95
96     gp_Dir  IGESSolid_Ellipsoid::YAxis () const
97 {
98   return gp_Dir(theXAxis ^ theZAxis);     // ^ overloaded
99 }
100
101     gp_Dir  IGESSolid_Ellipsoid::TransformedYAxis () const
102 {
103   if (!HasTransf()) return gp_Dir(theXAxis ^ theZAxis);
104   else
105     {
106       gp_XYZ tmp = theXAxis ^ theZAxis;
107       gp_GTrsf loc = Location();
108       loc.SetTranslationPart(gp_XYZ(0.,0.,0.));
109       loc.Transforms(tmp);
110       return gp_Dir(tmp);
111     }
112 }
113
114     gp_Dir  IGESSolid_Ellipsoid::ZAxis () const
115 {
116   return gp_Dir(theZAxis);
117 }
118
119     gp_Dir  IGESSolid_Ellipsoid::TransformedZAxis () const
120 {
121   if (!HasTransf()) return gp_Dir(theZAxis);
122   else
123     {
124       gp_XYZ tmp = theZAxis;
125       gp_GTrsf loc = Location();
126       loc.SetTranslationPart(gp_XYZ(0.,0.,0.));
127       loc.Transforms(tmp);
128       return gp_Dir(tmp);
129     }
130 }