Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 복소수를 사용하는 기하학

<시간/>

이 섹션에서는 C++에서 STL의 복합 클래스를 사용하여 포인트 클래스를 사용하는 방법을 살펴봅니다. 그리고 그것들을 기하학과 관련된 문제에 적용하십시오. 복소수는 STL의 복합 클래스 내부에 있습니다(#include )

포인트 클래스 정의

complex를 point로 만들기 위해 complex의 이름을 point로 변경한 다음 x를 복합 클래스의 real()로, y를 복합 클래스의 imag()로 변경합니다. 따라서 포인트 클래스를 시뮬레이션할 수 있습니다.

# include <complex>
typedef complex<double> point;
# define x real()
# define y imag()

x와 y는 매크로로 적용되었으며 변수로 적용할 수 없음을 명심해야 합니다.

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <iostream>
#include <complex>
using namespace std;
typedef complex<double> point;
#define x real()
#define y imag()
int main() {
   point my_pt(4.0, 5.0);
   cout << "The point is :" << "(" << my_pt.x << ", " << my_pt.y << ")";
}

출력

The point is :(4, 5)

기하학을 적용하기 위해 원점(0, 0)에서 P의 거리를 찾을 수 있으며 이는 -abs(P)로 표시됩니다. O가 원점인 X축에서 OP가 만든 각도:arg(z). 원점에 대한 P의 회전은 P * polar(r, θ)입니다.

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <iostream>
#include <complex>
#define PI 3.1415
using namespace std;
typedef complex<double> point;
#define x real()
#define y imag()
void print_point(point my_pt){
   cout << "(" << my_pt.x << ", " << my_pt.y << ")";
}
int main() {
   point my_pt(6.0, 7.0);
   cout << "The point is:" ;
   print_point(my_pt);
   cout << endl;
   cout << "Distance of the point from origin:" << abs(my_pt) << endl;
   cout << "Tangent angle made by OP with X-axis: (" << arg(my_pt) << ") rad = (" << arg(my_pt)*(180/PI) << ")" << endl;
   point rot_point = my_pt * polar(1.0, PI/2);
   cout << "Point after rotating 90 degrees counter-clockwise, will be: ";
   print_point(rot_point);
}

출력

The point is:(6, 7)
Distance of the point from origin:9.21954
Tangent angle made by OP with X-axis: (0.86217) rad = (49.4002)
Point after rotating 90 degrees counter-clockwise, will be: (-6.99972,
6.00032)