scifir-units 2.0.0
scifir-units is a library of units of measurement, angles, coordinates, fields, and related data, all lightweight, that help in the development of scientific software and scientific machines
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Private Member Functions | List of all members
scifir::coordinates_2d< float > Class Reference

#include <coordinates_2d.hpp>

Public Member Functions

 coordinates_2d ()
 
 coordinates_2d (const coordinates_2d< float > &x_coordinates)
 
 coordinates_2d (coordinates_2d< float > &&x_coordinates)
 
 coordinates_2d (float new_x, float new_y)
 
 coordinates_2d (float new_p, const angle &new_theta)
 
 coordinates_2d (coordinates_2d< length >::type coordinates_type, const string &coord1, const string &coord2)
 
 coordinates_2d (const string &init_coordinates_2d)
 
coordinates_2d< float > & operator= (const coordinates_2d< float > &x_coordinates)
 
coordinates_2d< float > & operator= (coordinates_2d< float > &&x_coordinates)
 
coordinates_2d< float > & operator= (const string &init_coordinates_2d)
 
float get_p () const
 
angle get_theta () const
 
void set_position (float new_x, float new_y)
 
void set_position (float new_p, const angle &new_theta)
 
void rotate (const angle &x_angle)
 
void move (const displacement_2d &x_displacement)
 
void move (float new_x, float new_y)
 
void move (float new_p, const angle &new_theta)
 
float distance_to_origin () const
 
string display_cartesian () const
 
string display_polar () const
 

Public Attributes

float x
 
float y
 

Private Member Functions

void initialize_from_string (string init_coordinates_2d)
 

Detailed Description

Definition at line 180 of file coordinates_2d.hpp.

Constructor & Destructor Documentation

◆ coordinates_2d() [1/7]

scifir::coordinates_2d< float >::coordinates_2d ( )
inline

◆ coordinates_2d() [2/7]

scifir::coordinates_2d< float >::coordinates_2d ( const coordinates_2d< float > &  x_coordinates)
inline

Definition at line 186 of file coordinates_2d.hpp.

186 : x(x_coordinates.x),y(x_coordinates.y)
187 {}

◆ coordinates_2d() [3/7]

scifir::coordinates_2d< float >::coordinates_2d ( coordinates_2d< float > &&  x_coordinates)
inline

Definition at line 189 of file coordinates_2d.hpp.

189 : x(std::move(x_coordinates.x)),y(std::move(x_coordinates.y))
190 {}

◆ coordinates_2d() [4/7]

scifir::coordinates_2d< float >::coordinates_2d ( float  new_x,
float  new_y 
)
inlineexplicit

Definition at line 192 of file coordinates_2d.hpp.

192 : x(new_x),y(new_y)
193 {}

◆ coordinates_2d() [5/7]

scifir::coordinates_2d< float >::coordinates_2d ( float  new_p,
const angle new_theta 
)
inlineexplicit

Definition at line 195 of file coordinates_2d.hpp.

196 {
197 set_position(new_p,new_theta);
198 }
void set_position(float new_x, float new_y)

◆ coordinates_2d() [6/7]

scifir::coordinates_2d< float >::coordinates_2d ( coordinates_2d< length >::type  coordinates_type,
const string coord1,
const string coord2 
)
inlineexplicit

Definition at line 200 of file coordinates_2d.hpp.

201 {
202 if (coordinates_type == coordinates_2d<length>::CARTESIAN)
203 {
204 set_position(stof(coord1),stof(coord2));
205 }
206 else if (coordinates_type == coordinates_2d<length>::POLAR)
207 {
208 set_position(stof(coord1),angle(coord2));
209 }
210 }

◆ coordinates_2d() [7/7]

scifir::coordinates_2d< float >::coordinates_2d ( const string init_coordinates_2d)
inlineexplicit

Definition at line 212 of file coordinates_2d.hpp.

213 {
214 initialize_from_string(init_coordinates_2d);
215 }
void initialize_from_string(string init_coordinates_2d)

Member Function Documentation

◆ display_cartesian()

string scifir::coordinates_2d< float >::display_cartesian ( ) const
inline

Definition at line 290 of file coordinates_2d.hpp.

291 {
292 ostringstream out;
293 out << "(" << display_float(x) << "," << display_float(y) << ")";
294 return out.str();
295 }
string display_float(const float &value, int number_of_decimals)
Definition types.cpp:36

◆ display_polar()

string scifir::coordinates_2d< float >::display_polar ( ) const
inline

Definition at line 297 of file coordinates_2d.hpp.

298 {
299 ostringstream out;
300 out << "(" << display_float(get_p(),2) << "," << get_theta() << ")";
301 return out.str();
302 }

◆ distance_to_origin()

float scifir::coordinates_2d< float >::distance_to_origin ( ) const
inline

Definition at line 285 of file coordinates_2d.hpp.

286 {
287 return float(std::sqrt(std::pow(x,2) + std::pow(y,2)));
288 }

◆ get_p()

float scifir::coordinates_2d< float >::get_p ( ) const
inline

Definition at line 237 of file coordinates_2d.hpp.

238 {
239 return float(std::sqrt(std::pow(x,2) + std::pow(y,2)));
240 }

◆ get_theta()

angle scifir::coordinates_2d< float >::get_theta ( ) const
inline

Definition at line 242 of file coordinates_2d.hpp.

243 {
244 return scifir::atan2(y,x);
245 }
angle atan2(float y, float x)
Definition angle.cpp:456

◆ initialize_from_string()

void scifir::coordinates_2d< float >::initialize_from_string ( string  init_coordinates_2d)
inlineprivate

Definition at line 308 of file coordinates_2d.hpp.

309 {
310 vector<string> values;
311 if (init_coordinates_2d.front() == '(')
312 {
313 init_coordinates_2d.erase(0,1);
314 }
315 if (init_coordinates_2d.back() == ')')
316 {
317 init_coordinates_2d.erase(init_coordinates_2d.size()-1,1);
318 }
319 boost::split(values,init_coordinates_2d,boost::is_any_of(","));
320 if (values.size() == 2)
321 {
322 if (values[0] == "" or values[1] == "")
323 {
324 return;
325 }
326 if (is_angle(values[1]))
327 {
328 set_position(stof(values[0]),angle(values[1]));
329 }
330 else
331 {
332 set_position(stof(values[0]),stof(values[1]));
333 }
334 }
335 }
bool is_angle(const string &init_angle)
Checks if some string is an initialization string of an angle.
Definition angle.cpp:336

◆ move() [1/3]

void scifir::coordinates_2d< float >::move ( const displacement_2d x_displacement)
inline

Definition at line 267 of file coordinates_2d.hpp.

268 {
269 x += float(x_displacement.x_projection());
270 y += float(x_displacement.y_projection());
271 }

◆ move() [2/3]

void scifir::coordinates_2d< float >::move ( float  new_p,
const angle new_theta 
)
inline

Definition at line 279 of file coordinates_2d.hpp.

280 {
281 x += new_p * scifir::cos(new_theta);
282 y += new_p * scifir::sin(new_theta);
283 }
float cos(const angle &x)
Calculates the cos of angle x. It uses the cos() function of the standard library of C++,...
Definition angle.cpp:431
float sin(const angle &x)
Calculates the sin of angle x. It uses the sin() function of the standard library of C++,...
Definition angle.cpp:426

◆ move() [3/3]

void scifir::coordinates_2d< float >::move ( float  new_x,
float  new_y 
)
inline

Definition at line 273 of file coordinates_2d.hpp.

274 {
275 x += new_x;
276 y += new_y;
277 }

◆ operator=() [1/3]

coordinates_2d< float > & scifir::coordinates_2d< float >::operator= ( const coordinates_2d< float > &  x_coordinates)
inline

Definition at line 217 of file coordinates_2d.hpp.

218 {
219 x = x_coordinates.x;
220 y = x_coordinates.y;
221 return *this;
222 }

◆ operator=() [2/3]

coordinates_2d< float > & scifir::coordinates_2d< float >::operator= ( const string init_coordinates_2d)
inline

Definition at line 231 of file coordinates_2d.hpp.

232 {
233 initialize_from_string(init_coordinates_2d);
234 return *this;
235 }

◆ operator=() [3/3]

coordinates_2d< float > & scifir::coordinates_2d< float >::operator= ( coordinates_2d< float > &&  x_coordinates)
inline

Definition at line 224 of file coordinates_2d.hpp.

225 {
226 x = std::move(x_coordinates.x);
227 y = std::move(x_coordinates.y);
228 return *this;
229 }

◆ rotate()

void scifir::coordinates_2d< float >::rotate ( const angle x_angle)
inline

Definition at line 259 of file coordinates_2d.hpp.

260 {
261 float x_coord = x;
262 float y_coord = y;
263 x = x_coord * scifir::cos(x_angle) - y_coord * scifir::sin(x_angle);
264 y = x_coord * scifir::sin(x_angle) + y_coord * scifir::cos(x_angle);
265 }

◆ set_position() [1/2]

void scifir::coordinates_2d< float >::set_position ( float  new_p,
const angle new_theta 
)
inline

Definition at line 253 of file coordinates_2d.hpp.

254 {
255 x = new_p * scifir::cos(new_theta);
256 y = new_p * scifir::sin(new_theta);
257 }

◆ set_position() [2/2]

void scifir::coordinates_2d< float >::set_position ( float  new_x,
float  new_y 
)
inline

Definition at line 247 of file coordinates_2d.hpp.

248 {
249 x = new_x;
250 y = new_y;
251 }

Member Data Documentation

◆ x

Definition at line 304 of file coordinates_2d.hpp.

◆ y

Definition at line 305 of file coordinates_2d.hpp.


The documentation for this class was generated from the following file: