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_2dr< float > Class Reference

#include <coordinates_2dr.hpp>

Collaboration diagram for scifir::coordinates_2dr< float >:
Collaboration graph
[legend]

Public Member Functions

 coordinates_2dr ()
 
 coordinates_2dr (const coordinates_2dr< float > &x_coordinates)
 
 coordinates_2dr (coordinates_2dr< float > &&x_coordinates)
 
 coordinates_2dr (float new_x, float new_y, const angle &new_theta)
 
 coordinates_2dr (float new_p, const angle &new_polar_theta, const angle &new_theta)
 
 coordinates_2dr (const scifir::coordinates_2d< float > &new_point, const angle &new_theta)
 
 coordinates_2dr (scifir::coordinates_2d< float > &&new_point, const angle &new_theta)
 
 coordinates_2dr (const string &init_coordinates_2dr)
 
coordinates_2dr< float > & operator= (const coordinates_2dr< float > &x_coordinates)
 
coordinates_2dr< float > & operator= (coordinates_2dr< float > &&x_coordinates)
 
coordinates_2dr< float > & operator= (const coordinates_2d< float > &x_coordinates)
 
coordinates_2dr< float > & operator= (coordinates_2d< float > &&x_coordinates)
 
coordinates_2dr< float > & operator= (const string &init_coordinates_2dr)
 
float get_p () const
 
angle get_polar_theta () const
 
void point_to (direction::name x)
 
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
 
angle theta
 

Private Member Functions

void initialize_from_string (string init_coordinates_2dr)
 

Detailed Description

Definition at line 239 of file coordinates_2dr.hpp.

Constructor & Destructor Documentation

◆ coordinates_2dr() [1/8]

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

◆ coordinates_2dr() [2/8]

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

Definition at line 245 of file coordinates_2dr.hpp.

245 : x(x_coordinates.x),y(x_coordinates.y),theta(x_coordinates.theta)
246 {}

◆ coordinates_2dr() [3/8]

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

Definition at line 248 of file coordinates_2dr.hpp.

248 : x(std::move(x_coordinates.x)),y(std::move(x_coordinates.y)),theta(std::move(x_coordinates.theta))
249 {}

◆ coordinates_2dr() [4/8]

scifir::coordinates_2dr< float >::coordinates_2dr ( float  new_x,
float  new_y,
const angle new_theta 
)
inlineexplicit

Definition at line 251 of file coordinates_2dr.hpp.

251 : x(new_x),y(new_y),theta(new_theta)
252 {}

◆ coordinates_2dr() [5/8]

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

Definition at line 254 of file coordinates_2dr.hpp.

254 : x(),y(),theta(new_theta)
255 {
256 set_position(new_p,new_polar_theta);
257 }
void set_position(float new_x, float new_y)

◆ coordinates_2dr() [6/8]

scifir::coordinates_2dr< float >::coordinates_2dr ( const scifir::coordinates_2d< float > &  new_point,
const angle new_theta 
)
inlineexplicit

Definition at line 259 of file coordinates_2dr.hpp.

259 : x(new_point.x),y(new_point.y),theta(new_theta)
260 {}

◆ coordinates_2dr() [7/8]

scifir::coordinates_2dr< float >::coordinates_2dr ( scifir::coordinates_2d< float > &&  new_point,
const angle new_theta 
)
inlineexplicit

Definition at line 262 of file coordinates_2dr.hpp.

262 : x(std::move(new_point.x)),y(std::move(new_point.y)),theta(new_theta)
263 {}

◆ coordinates_2dr() [8/8]

scifir::coordinates_2dr< float >::coordinates_2dr ( const string init_coordinates_2dr)
inlineexplicit

Definition at line 265 of file coordinates_2dr.hpp.

266 {
267 initialize_from_string(init_coordinates_2dr);
268 }
void initialize_from_string(string init_coordinates_2dr)

Member Function Documentation

◆ display_cartesian()

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

Definition at line 395 of file coordinates_2dr.hpp.

396 {
397 ostringstream out;
398 out << "(" << display_float(x) << "," << display_float(y) << ";" << theta << ")";
399 return out.str();
400 }
string display_float(const float &value, int number_of_decimals)
Definition types.cpp:36

◆ display_polar()

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

Definition at line 402 of file coordinates_2dr.hpp.

403 {
404 ostringstream out;
405 out << "(" << display_float(get_p()) << "," << get_polar_theta() << ";" << theta << ")";
406 return out.str();
407 }

◆ distance_to_origin()

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

Definition at line 390 of file coordinates_2dr.hpp.

391 {
392 return float(std::sqrt(std::pow(x,2) + std::pow(y,2)));
393 }

◆ get_p()

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

Definition at line 306 of file coordinates_2dr.hpp.

307 {
308 return float(std::sqrt(std::pow(x,2) + std::pow(y,2)));
309 }

◆ get_polar_theta()

angle scifir::coordinates_2dr< float >::get_polar_theta ( ) const
inline

Definition at line 311 of file coordinates_2dr.hpp.

312 {
313 return scifir::atan2(y,x);
314 }
angle atan2(float y, float x)
Definition angle.cpp:456

◆ initialize_from_string()

void scifir::coordinates_2dr< float >::initialize_from_string ( string  init_coordinates_2dr)
inlineprivate

Definition at line 414 of file coordinates_2dr.hpp.

415 {
416 vector<string> init_coordinates;
417 vector<string> init_values;
418 vector<string> init_angles;
419 if (init_coordinates_2dr.front() == '(')
420 {
421 init_coordinates_2dr.erase(0,1);
422 }
423 if (init_coordinates_2dr.back() == ')')
424 {
425 init_coordinates_2dr.erase(init_coordinates_2dr.size()-1,1);
426 }
427 boost::split(init_coordinates,init_coordinates_2dr,boost::is_any_of(";"));
428 if (init_coordinates.size() > 0)
429 {
430 boost::split(init_values,init_coordinates[0],boost::is_any_of(","));
431 }
432 if (init_coordinates.size() > 1)
433 {
434 boost::split(init_angles,init_coordinates[1],boost::is_any_of(","));
435 }
436 if (init_values.size() == 2 and init_angles.size() == 1)
437 {
438 if (init_values[0] == "" or init_values[1] == "" or init_angles[0] == "")
439 {
440 return;
441 }
442 if (is_angle(init_values[1]))
443 {
444 set_position(stof(init_values[0]),angle(init_values[1]));
445 }
446 else
447 {
448 set_position(stof(init_values[0]),stof(init_values[1]));
449 }
450 theta = angle(init_angles[0]);
451 }
452 }
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_2dr< float >::move ( const displacement_2d x_displacement)
inline

Definition at line 372 of file coordinates_2dr.hpp.

373 {
374 x += float(x_displacement.x_projection());
375 y += float(x_displacement.y_projection());
376 }

◆ move() [2/3]

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

Definition at line 384 of file coordinates_2dr.hpp.

385 {
386 x += new_p * scifir::cos(new_theta);
387 y += new_p * scifir::sin(new_theta);
388 }
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_2dr< float >::move ( float  new_x,
float  new_y 
)
inline

Definition at line 378 of file coordinates_2dr.hpp.

379 {
380 x += new_x;
381 y += new_y;
382 }

◆ operator=() [1/5]

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

Definition at line 286 of file coordinates_2dr.hpp.

287 {
288 x = x_coordinates.x;
289 y = x_coordinates.y;
290 return *this;
291 }

◆ operator=() [2/5]

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

Definition at line 270 of file coordinates_2dr.hpp.

271 {
272 x = x_coordinates.x;
273 y = x_coordinates.y;
274 theta = x_coordinates.theta;
275 return *this;
276 }

◆ operator=() [3/5]

coordinates_2dr< float > & scifir::coordinates_2dr< float >::operator= ( const string init_coordinates_2dr)
inline

Definition at line 300 of file coordinates_2dr.hpp.

301 {
302 initialize_from_string(init_coordinates_2dr);
303 return *this;
304 }

◆ operator=() [4/5]

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

Definition at line 293 of file coordinates_2dr.hpp.

294 {
295 x = std::move(x_coordinates.x);
296 y = std::move(x_coordinates.y);
297 return *this;
298 }

◆ operator=() [5/5]

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

Definition at line 278 of file coordinates_2dr.hpp.

279 {
280 x = std::move(x_coordinates.x);
281 y = std::move(x_coordinates.y);
282 theta = std::move(x_coordinates.theta);
283 return *this;
284 }

◆ point_to()

void scifir::coordinates_2dr< float >::point_to ( direction::name  x)
inline

Definition at line 316 of file coordinates_2dr.hpp.

317 {
318 if (x == direction::LEFT)
319 {
320 theta = 180.0f;
321 }
322 else if(x == direction::RIGHT)
323 {
324 theta = 0.0f;
325 }
326 else if(x == direction::TOP)
327 {
328 theta = 90.0f;
329 }
330 else if(x == direction::BOTTOM)
331 {
332 theta = 270.0f;
333 }
334 else if(x == direction::LEFT_TOP)
335 {
336 theta = 135.0f;
337 }
338 else if(x == direction::RIGHT_TOP)
339 {
340 theta = 45.0f;
341 }
342 else if(x == direction::RIGHT_BOTTOM)
343 {
344 theta = 315.0f;
345 }
346 else if(x == direction::LEFT_BOTTOM)
347 {
348 theta = 225.0f;
349 }
350 }

◆ rotate()

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

Definition at line 364 of file coordinates_2dr.hpp.

365 {
366 float x_coord = x;
367 float y_coord = y;
368 x = x_coord * scifir::cos(x_angle) - y_coord * scifir::sin(x_angle);
369 y = x_coord * scifir::sin(x_angle) + y_coord * scifir::cos(x_angle);
370 }

◆ set_position() [1/2]

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

Definition at line 358 of file coordinates_2dr.hpp.

359 {
360 x = new_p * scifir::cos(new_theta);
361 y = new_p * scifir::sin(new_theta);
362 }

◆ set_position() [2/2]

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

Definition at line 352 of file coordinates_2dr.hpp.

353 {
354 x = new_x;
355 y = new_y;
356 }

Member Data Documentation

◆ theta

Definition at line 411 of file coordinates_2dr.hpp.

◆ x

Definition at line 409 of file coordinates_2dr.hpp.

◆ y

Definition at line 410 of file coordinates_2dr.hpp.


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