본문 바로가기
컴퓨터공학/수학

[기하] C++의 복소수 클래스 complex

by 독서왕뼝아리 2023. 6. 1.

 

기하 문제를 풀 때 c++의 복소수 클래스 complex를 사용할 수 있다. 이 클래스를 이용하면 점과 벡터를 복소수 형태로 표현할 수 있고, 클래스의 기능을 이용하여 점과 벡터를 다룰 수도 있다.

typedef long long C; // 정수 좌표를 써도 되는 경우
// typedef long double C; // 정수 좌표를 쓸 수 없는 경우

typedef complex<C> P;

#define X real()
#define Y imag()

정수 계산이 정확하기 때문에 정수좌표를 사용하는 것을 권장한다.

 

 

함수

complex 클래스에는 기하 문제를 풀 때 활용할 수 있는 함수를 제공한다. long double 자료형임을 주의하자.

  • abs(v)
    벡터 v={x, y}의 길이를 계산하는 함수이다. sqrt(x^2+y^2)
    이 함수를 이용하여 두 점 사이 거리를 구할 수도 있다. abs(b-a)

 

  • arg(v)
    벡터 v={x, y}와 x축 사이의 각의 크기를 계산하는 함수이다. 이 함수는 각의 크기를 라디안으로 반환한다.

 

  • polar(s, a)
    길이가 s이고 각도가 a라디안인 벡터를 생성하는 함수이다.
P v = {4, 2};
cout<< arg(v) <<endl; // 0.463648
v *= polar(1.0, 0.5);
cout<< arg(v) <<endl; // 0.963648

 

  • conj(v)
    벡터의 y좌표의 부호를 뒤집는 함수이다. 두 벡터의 외적 계산을 할 때 활용된다.
P a = {4,2};
P b = {1,2};
C crossProduct = (conj(a)*b).Y; // a.x*b.y-a.y*b.x = 6

다음과 같이 외적 결과를 얻을 수 있다. 

 

 

>>> 벡터와 외적 활용하기

2023.05.31 - [컴퓨터공학/수학] - [기하] 벡터와 외적의 활용