SheafSystem  0.0.0.0
chart_point_3d.h
Go to the documentation of this file.
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
20 
21 #ifndef CHART_POINT_3D_H
22 #define CHART_POINT_3D_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef CHART_POINT_H
29 #include "SheafSystem/chart_point.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34 
35  using namespace sheaf;
36 
40 class SHEAF_DLL_SPEC chart_point_3d : public chart_point
41 {
42  // ===========================================================
44  // ===========================================================
46 
47 public:
48 
53 
58  chart_point_3d(const chart_point_3d& xother);
59 
63  virtual ~chart_point_3d();
64 
70  coord_type xu,
71  coord_type xv,
72  coord_type xw);
73 
78  chart_point_3d(const scoped_index& xchart_id,
79  coord_type xu,
80  coord_type xv,
81  coord_type xw);
82 
88  const coord_type* xlocal_coords,
89  size_type xlocal_coords_ub);
90 
95  chart_point_3d(const scoped_index& xchart_id,
96  const coord_type* xlocal_coords,
97  size_type xlocal_coords_ub);
98 
102  virtual int db() const;
103 
107  virtual coord_type local_coord(int xi) const;
108 
112  virtual void put_local_coord(int xi, coord_type xvalue);
113 
117  coord_type* local_coords();
118 
122  const coord_type* local_coords() const;
123 
127  const coord_type& u() const;
128 
132  const coord_type& v() const;
133 
137  const coord_type& w() const;
138 
142  void put(pod_index_type xchart_id,
143  coord_type xu,
144  coord_type xv,
145  coord_type xw);
146 
150  void put(const scoped_index& xchart_id,
151  coord_type xu,
152  coord_type xv,
153  coord_type xw);
154 
155 protected:
156 
160  coord_type _local_coords[3];
161 
162 private:
163 
165 
166 
167  // ===========================================================
169  // ===========================================================
171 
172 public:
173 
174 protected:
175 
176 private:
177 
179 
180 
181  // ===========================================================
183  // ===========================================================
184 
185 public:
186 
191  virtual chart_point_3d* clone() const;
192 
196  virtual bool invariant() const;
197 
201  virtual bool is_ancestor_of(const any* other) const;
202 
207  {
208  return reinterpret_cast<chart_point_3d&>(chart_point::operator=(xother));
209  };
210 
214  chart_point_3d& operator=(const chart_point_3d& xother);
215 
216 protected:
217 
218 private:
219 
221 };
222 
223 // =============================================================================
224 // NON-MEMBER FUNCTIONS
225 // =============================================================================
226 
231 SHEAF_DLL_SPEC
232 size_t deep_size(const chart_point_3d& xp, bool xinclude_shallow = true);
233 
234 
235 } // namespace fiber_bundle
236 
237 #endif // ifndef CHART_POINT_3D_H
chart_point_3d & operator=(const chart_point &xother)
Assignment operator.
chart_point_coord_type coord_type
The type of local coordinate; the scalar type for the local coordinate vector space.
Definition: chart_point.h:65
A point in a 3D chart space.
A point in chart space.
Definition: chart_point.h:52
chart_point & operator=(const chart_point &xother)
Assignment operator.
Definition: chart_point.cc:449
Abstract base class with useful features for all objects.
Definition: any.h:39
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
Namespace for the sheaves component of the sheaf system.
Namespace for the fiber_bundles component of the sheaf system.