ZeusMath-Library  2.0.4
IAngle.hpp
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (C) 2011 by Benjamin Hadorn (b_hadorn@bluewin.ch)
3  *****************************************************************************
4  * Project : Zeus Math Library
5  * Module : IAngle
6  * Package : Zeus.ZeusMath.System.Interfaces
7  * Author : Martin Abbuehl
8  * Date : 27.12.2011
9  * System : Zeus-Framework
10  *****************************************************************************
11  * Licence: *
12  * This library is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU Lesser General Public License as *
14  * published by the Free Software Foundation; either version *
15  * 2.1 of the License, or (at your option) any later version. *
16  * *
17  * This library is distributed in the hope that it will be useful, *
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
20  * GNU Lesser General Public License for more details. *
21  * *
22  * You should have received a copy of the GNU Lesser General Public *
23  * License along with this library; if not, write to the Free Software *
24  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA *
25  *****************************************************************************/
26 
27 /*****************************************************************************
28  * Changes:
29  * 27.12.2011 bha: created zeus 2.0
30  *****************************************************************************/
31 
32 #ifndef IAngleHPP
33 #define IAngleHPP
34 
35 #include <zeusbase/System/Interfaces/IValueType.hpp>
37 
38 
39 BEGIN_NAMESPACE_Zeus
40 
41 
42 /******************************************************************************/
46 /******************************************************************************/
47 class IAngle : public IValueType
48 {
49  public:
50  /******************************************************************************/
52  /******************************************************************************/
53  enum ESystem
54  {
55  etRadians = 0,
56  etDegrees = 1
57  // Search for OnChangeIAngle::ESystem in files if you modify this enum.
58  };
59 
60  /******************************************************************************/
64  /******************************************************************************/
65  virtual Float MQUALIFIER getRadians() const = 0;
66 
67  /******************************************************************************/
71  /******************************************************************************/
72  virtual Float MQUALIFIER getDegrees() const = 0;
73 
74  /******************************************************************************/
78  /******************************************************************************/
79  virtual void MQUALIFIER setRadians(const Float& fAngle) = 0;
80 
81  /******************************************************************************/
85  /******************************************************************************/
86  virtual void MQUALIFIER setDegrees(const Float& fAngle) = 0;
87 
88  /******************************************************************************/
93  /******************************************************************************/
94  virtual void MQUALIFIER assign(const IAngle& rAngle) = 0;
95 
96  /******************************************************************************/
105  /******************************************************************************/
106  virtual bool MQUALIFIER isEqual(const IAngle& rAngle,
107  bool bNormalizeToSingleCircle = false) const = 0;
108 
109  /******************************************************************************/
111  /******************************************************************************/
112  /******************************************************************************/
116  /******************************************************************************/
117  virtual Float MQUALIFIER cos() const = 0;
118 
119  /******************************************************************************/
123  /******************************************************************************/
124  virtual Float MQUALIFIER sin() const = 0;
125 
126  /******************************************************************************/
130  /******************************************************************************/
131  virtual Float MQUALIFIER tan() const = 0;
132 
133  /******************************************************************************/
140  /******************************************************************************/
141  virtual void MQUALIFIER normalizeToInterval(const IAngle& rAngleMin,
142  const IAngle& rAngleMax,
143  bool bIncludeMin, bool bIncludeMax) = 0;
144 
145  /******************************************************************************/
147  /******************************************************************************/
148  virtual void MQUALIFIER normalizeToSingleCircle() = 0;
149 
150  /******************************************************************************/
152  /******************************************************************************/
153  HIDE_ASSIGNMENT_OPERATOR(IAngle)
154 };
155 
156 END_NAMESPACE_Zeus
157 
158 
159 #endif
ESystem
Definition: IAngle.hpp:53
Definition: IAngle.hpp:47


Written by Benjamin Hadorn http://www.xatlantis.ch.
Last change made on Wed Sep 14 2016 06:45:51