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

#include <coordinates_3dr.hpp>

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

Public Member Functions

 coordinates_3dr ()
 
 coordinates_3dr (const coordinates_3dr< float > &x_coordinates)
 
 coordinates_3dr (coordinates_3dr< float > &&x_coordinates)
 
 coordinates_3dr (float new_x, float new_y, float new_z, const angle &new_theta, const angle &new_phi)
 
 coordinates_3dr (float new_p, const angle &new_cylindrical_theta, float new_z, const angle &new_theta, const angle &new_phi)
 
 coordinates_3dr (float new_r, const angle &new_spherical_theta, const angle &new_spherical_phi, const angle &new_theta, const angle &new_phi)
 
 coordinates_3dr (const angle &new_latitude, const angle &new_longitude, float new_altitude, const angle &new_theta, const angle &new_phi)
 
 coordinates_3dr (const coordinates_3d< float > &x_coordinates, const angle &new_theta, const angle &new_phi)
 
 coordinates_3dr (coordinates_3d< float > &&x_coordinates, const angle &new_theta, const angle &new_phi)
 
 coordinates_3dr (const string &init_coordinates_3dr)
 
coordinates_3dr< float > & operator= (const coordinates_3dr< float > &x_coordinates)
 
coordinates_3dr< float > & operator= (coordinates_3dr< float > &&x_coordinates)
 
coordinates_3dr< float > & operator= (const coordinates_3d< float > &x_coordinates)
 
coordinates_3dr< float > & operator= (coordinates_3d< float > &&x_coordinates)
 
coordinates_3dr< float > & operator= (const string &init_coordinates_3dr)
 
float get_p () const
 
angle get_spherical_theta () const
 
float get_r () const
 
angle get_spherical_phi () const
 
latitude get_latitude () const
 
longitude get_longitude () const
 
float get_altitude () const
 
void point_to (direction::name x)
 
void set_position (float new_x, float new_y, float new_z)
 
void set_position (float new_p, const angle &new_theta, float new_z)
 
void set_position (float new_r, const angle &new_theta, const angle &new_phi)
 
void set_position (const angle &new_latitude, const angle &new_longitude, float new_altitude)
 
void rotate_in_x (const angle &x_angle)
 
void rotate_in_y (const angle &x_angle)
 
void rotate_in_z (const angle &x_angle)
 
void move (const displacement_3d &x_displacement)
 
void move (float new_x, float new_y, float new_z)
 
void move (float new_p, const angle &new_theta, float new_z)
 
void move (float new_r, const angle &new_theta, const angle &new_phi)
 
float distance_to_origin () const
 
string display_cartesian () const
 
string display_cylindrical () const
 
string display_spherical () const
 
string display_geographical () const
 

Public Attributes

float x
 
float y
 
float z
 
angle theta
 
angle phi
 

Private Member Functions

void initialize_from_string (string init_coordinates_3dr)
 

Detailed Description

Definition at line 462 of file coordinates_3dr.hpp.

Constructor & Destructor Documentation

◆ coordinates_3dr() [1/10]

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

◆ coordinates_3dr() [2/10]

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

Definition at line 468 of file coordinates_3dr.hpp.

468 : x(x_coordinates.x),y(x_coordinates.y),z(x_coordinates.z),theta(x_coordinates.theta),phi(x_coordinates.phi)
469 {}

◆ coordinates_3dr() [3/10]

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

Definition at line 471 of file coordinates_3dr.hpp.

471 : x(std::move(x_coordinates.x)),y(std::move(x_coordinates.y)),z(std::move(x_coordinates.z)),theta(std::move(x_coordinates.theta)),phi(std::move(x_coordinates.phi))
472 {}

◆ coordinates_3dr() [4/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( float  new_x,
float  new_y,
float  new_z,
const angle new_theta,
const angle new_phi 
)
inlineexplicit

Definition at line 474 of file coordinates_3dr.hpp.

474 : x(new_x),y(new_y),z(new_z),theta(new_theta),phi(new_phi)
475 {}

◆ coordinates_3dr() [5/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( float  new_p,
const angle new_cylindrical_theta,
float  new_z,
const angle new_theta,
const angle new_phi 
)
inlineexplicit

Definition at line 477 of file coordinates_3dr.hpp.

477 : x(),y(),z(),theta(new_theta),phi(new_phi)
478 {
479 set_position(new_p,new_cylindrical_theta,new_z);
480 }
void set_position(float new_x, float new_y, float new_z)

◆ coordinates_3dr() [6/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( float  new_r,
const angle new_spherical_theta,
const angle new_spherical_phi,
const angle new_theta,
const angle new_phi 
)
inlineexplicit

Definition at line 482 of file coordinates_3dr.hpp.

482 : x(),y(),z(),theta(new_theta),phi(new_phi)
483 {
484 set_position(new_r,new_spherical_theta,new_spherical_phi);
485 }

◆ coordinates_3dr() [7/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( const angle new_latitude,
const angle new_longitude,
float  new_altitude,
const angle new_theta,
const angle new_phi 
)
inlineexplicit

Definition at line 487 of file coordinates_3dr.hpp.

487 : x(),y(),z(),theta(new_theta),phi(new_phi)
488 {
489 set_position(new_latitude,new_longitude,new_altitude);
490 }

◆ coordinates_3dr() [8/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( const coordinates_3d< float > &  x_coordinates,
const angle new_theta,
const angle new_phi 
)
inlineexplicit

Definition at line 492 of file coordinates_3dr.hpp.

492 : x(x_coordinates.x),y(x_coordinates.y),z(x_coordinates.z),theta(new_theta),phi(new_phi)
493 {}

◆ coordinates_3dr() [9/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( coordinates_3d< float > &&  x_coordinates,
const angle new_theta,
const angle new_phi 
)
inlineexplicit

Definition at line 495 of file coordinates_3dr.hpp.

495 : x(std::move(x_coordinates.x)),y(std::move(x_coordinates.y)),z(std::move(x_coordinates.z)),theta(new_theta),phi(new_phi)
496 {}

◆ coordinates_3dr() [10/10]

scifir::coordinates_3dr< float >::coordinates_3dr ( const string init_coordinates_3dr)
inlineexplicit

Definition at line 498 of file coordinates_3dr.hpp.

499 {
500 initialize_from_string(init_coordinates_3dr);
501 }
void initialize_from_string(string init_coordinates_3dr)

Member Function Documentation

◆ display_cartesian()

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

Definition at line 799 of file coordinates_3dr.hpp.

800 {
801 ostringstream out;
802 out << "(" << display_float(x) << "," << display_float(y) << "," << display_float(z) << ";" << theta << "," << phi << ")";
803 return out.str();
804 }
string display_float(const float &value, int number_of_decimals)
Definition types.cpp:36

◆ display_cylindrical()

string scifir::coordinates_3dr< float >::display_cylindrical ( ) const
inline

Definition at line 806 of file coordinates_3dr.hpp.

807 {
808 ostringstream out;
809 out << "(" << display_float(get_p()) << "," << get_spherical_theta() << "," << display_float(z) << ";" << theta << "," << phi << ")";
810 return out.str();
811 }

◆ display_geographical()

string scifir::coordinates_3dr< float >::display_geographical ( ) const
inline

Definition at line 820 of file coordinates_3dr.hpp.

821 {
822 ostringstream out;
823 out << "(" << get_latitude() << "," << get_longitude() << "," << display_float(get_altitude()) << ";" << theta << "," << phi << ")";
824 return out.str();
825 }

◆ display_spherical()

string scifir::coordinates_3dr< float >::display_spherical ( ) const
inline

Definition at line 813 of file coordinates_3dr.hpp.

814 {
815 ostringstream out;
816 out << "(" << display_float(get_r()) << "," << get_spherical_theta() << "," << get_spherical_phi() << ";" << theta << "," << phi << ")";
817 return out.str();
818 }

◆ distance_to_origin()

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

Definition at line 794 of file coordinates_3dr.hpp.

795 {
796 return float(std::sqrt(std::pow(x,2) + std::pow(y,2) + std::pow(z,2)));
797 }

◆ get_altitude()

float scifir::coordinates_3dr< float >::get_altitude ( ) const
inline

Definition at line 575 of file coordinates_3dr.hpp.

576 {
577 return ECEF_to_LLA_altitude(x,y,z);
578 }
scalar_unit ECEF_to_LLA_altitude(const scalar_unit &x, scalar_unit y, const scalar_unit &z)

◆ get_latitude()

latitude scifir::coordinates_3dr< float >::get_latitude ( ) const
inline

Definition at line 565 of file coordinates_3dr.hpp.

566 {
567 return ECEF_to_LLA_latitude(x,y,z);
568 }
latitude ECEF_to_LLA_latitude(const scalar_unit &x, scalar_unit y, const scalar_unit &z)

◆ get_longitude()

longitude scifir::coordinates_3dr< float >::get_longitude ( ) const
inline

Definition at line 570 of file coordinates_3dr.hpp.

571 {
572 return ECEF_to_LLA_longitude(x,y,z);
573 }
longitude ECEF_to_LLA_longitude(const scalar_unit &x, scalar_unit y, const scalar_unit &z)

◆ get_p()

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

Definition at line 545 of file coordinates_3dr.hpp.

546 {
547 return float(std::sqrt(std::pow(x,2) + std::pow(y,2)));
548 }

◆ get_r()

float scifir::coordinates_3dr< float >::get_r ( ) const
inline

Definition at line 555 of file coordinates_3dr.hpp.

556 {
557 return float(std::sqrt(std::pow(x,2) + std::pow(y,2) + std::pow(z,2)));
558 }

◆ get_spherical_phi()

angle scifir::coordinates_3dr< float >::get_spherical_phi ( ) const
inline

Definition at line 560 of file coordinates_3dr.hpp.

561 {
562 return angle(scifir::acos_degree(float(z/std::sqrt(std::pow(x,2) + std::pow(y,2) + std::pow(z,2)))));
563 }
float acos_degree(float x)
Calculates the acos receiving x in degrees. It uses the acos() function of the standard library of C+...
Definition angle.hpp:247

◆ get_spherical_theta()

angle scifir::coordinates_3dr< float >::get_spherical_theta ( ) const
inline

Definition at line 550 of file coordinates_3dr.hpp.

551 {
552 return scifir::atan(float(y/x));
553 }
angle atan(float x)
Calculates the atan of some value x and returns the result as angle in degrees.
Definition angle.cpp:451

◆ initialize_from_string()

void scifir::coordinates_3dr< float >::initialize_from_string ( string  init_coordinates_3dr)
inlineprivate

Definition at line 834 of file coordinates_3dr.hpp.

835 {
836 vector<string> init_coordinates;
837 vector<string> init_values;
838 vector<string> init_angles;
839 if (init_coordinates_3dr.front() == '(')
840 {
841 init_coordinates_3dr.erase(0,1);
842 }
843 if (init_coordinates_3dr.back() == ')')
844 {
845 init_coordinates_3dr.erase(init_coordinates_3dr.size()-1,1);
846 }
847 boost::split(init_coordinates,init_coordinates_3dr,boost::is_any_of(";"));
848 if (init_coordinates.size() > 0)
849 {
850 boost::split(init_values,init_coordinates[0],boost::is_any_of(","));
851 }
852 if (init_coordinates.size() > 1)
853 {
854 boost::split(init_angles,init_coordinates[1],boost::is_any_of(","));
855 }
856 if (init_values.size() == 3 and init_angles.size() == 2)
857 {
858 if (init_values[0] == "" or init_values[1] == "" or init_values[2] == "" or init_angles[0] == "" or init_angles[1] == "")
859 {
860 return;
861 }
862 if (is_latitude(init_values[0]))
863 {
864 if (is_longitude(init_values[1]))
865 {
866 if (!is_angle(init_values[2]))
867 {
868 set_position(angle(init_values[0]),angle(init_values[1]),stof(init_values[2]));
869 }
870 }
871 }
872 else
873 {
874 if (is_angle(init_values[1]))
875 {
876 if (is_angle(init_values[2]))
877 {
878 set_position(stof(init_values[0]),angle(init_values[1]),angle(init_values[2]));
879 }
880 else
881 {
882 set_position(stof(init_values[0]),angle(init_values[1]),stof(init_values[2]));
883 }
884 }
885 else
886 {
887 if (!is_angle(init_values[2]))
888 {
889 set_position(stof(init_values[0]),stof(init_values[1]),stof(init_values[2]));
890 }
891 }
892 }
893 theta = angle(init_angles[0]);
894 phi = angle(init_angles[1]);
895 }
896 }
bool is_latitude(const string &init_latitude)
Definition latitude.cpp:199
bool is_longitude(const string &init_longitude)
bool is_angle(const string &init_angle)
Checks if some string is an initialization string of an angle.
Definition angle.cpp:336

◆ move() [1/4]

void scifir::coordinates_3dr< float >::move ( const displacement_3d x_displacement)
inline

Definition at line 766 of file coordinates_3dr.hpp.

767 {
768 x += float(x_displacement.x_projection());
769 y += float(x_displacement.y_projection());
770 z += float(x_displacement.z_projection());
771 }

◆ move() [2/4]

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

Definition at line 780 of file coordinates_3dr.hpp.

781 {
782 x += new_p * scifir::cos(new_theta);
783 y += new_p * scifir::sin(new_theta);
784 z += new_z;
785 }
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/4]

void scifir::coordinates_3dr< float >::move ( float  new_r,
const angle new_theta,
const angle new_phi 
)
inline

Definition at line 787 of file coordinates_3dr.hpp.

788 {
789 x += new_r * scifir::cos(new_theta) * scifir::sin(new_phi);
790 y += new_r * scifir::sin(new_theta) * scifir::sin(new_phi);
791 z += new_r * scifir::cos(new_phi);
792 }

◆ move() [4/4]

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

Definition at line 773 of file coordinates_3dr.hpp.

774 {
775 x += new_x;
776 y += new_y;
777 z += new_z;
778 }

◆ operator=() [1/5]

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

Definition at line 523 of file coordinates_3dr.hpp.

524 {
525 x = x_coordinates.x;
526 y = x_coordinates.y;
527 z = x_coordinates.z;
528 return *this;
529 }

◆ operator=() [2/5]

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

Definition at line 503 of file coordinates_3dr.hpp.

504 {
505 x = x_coordinates.x;
506 y = x_coordinates.y;
507 z = x_coordinates.z;
508 theta = x_coordinates.theta;
509 phi = x_coordinates.phi;
510 return *this;
511 }

◆ operator=() [3/5]

coordinates_3dr< float > & scifir::coordinates_3dr< float >::operator= ( const string init_coordinates_3dr)
inline

Definition at line 539 of file coordinates_3dr.hpp.

540 {
541 initialize_from_string(init_coordinates_3dr);
542 return *this;
543 }

◆ operator=() [4/5]

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

Definition at line 531 of file coordinates_3dr.hpp.

532 {
533 x = std::move(x_coordinates.x);
534 y = std::move(x_coordinates.y);
535 z = std::move(x_coordinates.z);
536 return *this;
537 }

◆ operator=() [5/5]

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

Definition at line 513 of file coordinates_3dr.hpp.

514 {
515 x = std::move(x_coordinates.x);
516 y = std::move(x_coordinates.y);
517 z = std::move(x_coordinates.z);
518 theta = std::move(x_coordinates.theta);
519 phi = std::move(x_coordinates.phi);
520 return *this;
521 }

◆ point_to()

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

Definition at line 580 of file coordinates_3dr.hpp.

581 {
582 if (x == direction::LEFT)
583 {
584 theta = 270.0f;
585 phi = 90.0f;
586 }
587 else if(x == direction::RIGHT)
588 {
589 theta = 90.0f;
590 phi = 90.0f;
591 }
592 else if(x == direction::TOP)
593 {
594 theta = 0.0f;
595 phi = 0.0f;
596 }
597 else if(x == direction::BOTTOM)
598 {
599 theta = 0.0f;
600 phi = 180.0f;
601 }
602 else if(x == direction::LEFT_TOP)
603 {
604 theta = 270.0f;
605 phi = 45.0f;
606 }
607 else if(x == direction::RIGHT_TOP)
608 {
609 theta = 90.0f;
610 phi = 45.0f;
611 }
612 else if(x == direction::RIGHT_BOTTOM)
613 {
614 theta = 90.0f;
615 phi = 135.0f;
616 }
617 else if(x == direction::LEFT_BOTTOM)
618 {
619 theta = 270.0f;
620 phi = 135.0f;
621 }
622 else if(x == direction::FRONT)
623 {
624 theta = 0.0f;
625 phi = 90.0f;
626 }
627 else if(x == direction::BACK)
628 {
629 theta = 180.0f;
630 phi = 90.0f;
631 }
632 else if(x == direction::LEFT_FRONT)
633 {
634 theta = 315.0f;
635 phi = 90.0f;
636 }
637 else if(x == direction::RIGHT_FRONT)
638 {
639 theta = 45.0f;
640 phi = 90.0f;
641 }
642 else if(x == direction::TOP_FRONT)
643 {
644 theta = 0.0f;
645 phi = 45.0f;
646 }
647 else if(x == direction::BOTTOM_FRONT)
648 {
649 theta = 0.0f;
650 phi = 135.0f;
651 }
652 else if(x == direction::LEFT_BACK)
653 {
654 theta = 225.0f;
655 phi = 90.0f;
656 }
657 else if(x == direction::RIGHT_BACK)
658 {
659 theta = 135.0f;
660 phi = 90.0f;
661 }
662 else if(x == direction::TOP_BACK)
663 {
664 theta = 180.0f;
665 phi = 45.0f;
666 }
667 else if(x == direction::BOTTOM_BACK)
668 {
669 theta = 180.0f;
670 phi = 135.0f;
671 }
672 else if(x == direction::LEFT_TOP_FRONT)
673 {
674 theta = 315.0f;
675 phi = 45.0f;
676 }
677 else if(x == direction::RIGHT_TOP_FRONT)
678 {
679 theta = 45.0f;
680 phi = 45.0f;
681 }
683 {
684 theta = 315.0f;
685 phi = 135.0f;
686 }
688 {
689 theta = 45.0f;
690 phi = 135.0f;
691 }
692 else if(x == direction::LEFT_TOP_BACK)
693 {
694 theta = 225.0f;
695 phi = 45.0f;
696 }
697 else if(x == direction::RIGHT_TOP_BACK)
698 {
699 theta = 135.0f;
700 phi = 45.0f;
701 }
703 {
704 theta = 225.0f;
705 phi = 135.0f;
706 }
708 {
709 theta = 135.0f;
710 phi = 135.0f;
711 }
712 }

◆ rotate_in_x()

void scifir::coordinates_3dr< float >::rotate_in_x ( const angle x_angle)
inline

Definition at line 742 of file coordinates_3dr.hpp.

743 {
744 float y_coord = y;
745 float z_coord = z;
746 y = y_coord * scifir::cos(x_angle) - z_coord * scifir::sin(x_angle);
747 z = y_coord * scifir::sin(x_angle) + z_coord * scifir::cos(x_angle);
748 }

◆ rotate_in_y()

void scifir::coordinates_3dr< float >::rotate_in_y ( const angle x_angle)
inline

Definition at line 750 of file coordinates_3dr.hpp.

751 {
752 float x_coord = x;
753 float z_coord = z;
754 x = x_coord * scifir::cos(x_angle) - z_coord * scifir::sin(x_angle);
755 z = x_coord * scifir::sin(x_angle) + z_coord * scifir::cos(x_angle);
756 }

◆ rotate_in_z()

void scifir::coordinates_3dr< float >::rotate_in_z ( const angle x_angle)
inline

Definition at line 758 of file coordinates_3dr.hpp.

759 {
760 float x_coord = x;
761 float y_coord = y;
762 x = x_coord * scifir::cos(x_angle) - y_coord * scifir::sin(x_angle);
763 y = x_coord * scifir::sin(x_angle) + y_coord * scifir::cos(x_angle);
764 }

◆ set_position() [1/4]

void scifir::coordinates_3dr< float >::set_position ( const angle new_latitude,
const angle new_longitude,
float  new_altitude 
)
inline

Definition at line 735 of file coordinates_3dr.hpp.

736 {
737 x = new_altitude * scifir::cos(new_latitude) * scifir::cos(new_longitude);
738 y = new_altitude * scifir::cos(new_latitude) * scifir::sin(new_longitude);
739 z = new_altitude * scifir::sin(new_latitude);
740 }

◆ set_position() [2/4]

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

Definition at line 721 of file coordinates_3dr.hpp.

722 {
723 x = new_p * scifir::cos(new_theta);
724 y = new_p * scifir::sin(new_theta);
725 z = new_z;
726 }

◆ set_position() [3/4]

void scifir::coordinates_3dr< float >::set_position ( float  new_r,
const angle new_theta,
const angle new_phi 
)
inline

Definition at line 728 of file coordinates_3dr.hpp.

729 {
730 x = new_r * scifir::cos(new_theta) * scifir::sin(new_phi);
731 y = new_r * scifir::sin(new_theta) * scifir::sin(new_phi);
732 z = new_r * scifir::cos(new_phi);
733 }

◆ set_position() [4/4]

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

Definition at line 714 of file coordinates_3dr.hpp.

715 {
716 x = new_x;
717 y = new_y;
718 z = new_z;
719 }

Member Data Documentation

◆ phi

Definition at line 831 of file coordinates_3dr.hpp.

◆ theta

Definition at line 830 of file coordinates_3dr.hpp.

◆ x

Definition at line 827 of file coordinates_3dr.hpp.

◆ y

Definition at line 828 of file coordinates_3dr.hpp.

◆ z

Definition at line 829 of file coordinates_3dr.hpp.


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