ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 점과 점의 각도(삼각함수의 역함수를 이용)
    Algorithm with C/Math 2020. 9. 10. 08:32

    1. 설명

     

    위의 정보를 가지고 우리는 각도 theta를 구할 수 있다.

    dx와 dy를 알고 있으므로 이는 tangent함수를 이용해서 구할 수 있다.

    각도는 반시계 방향을 기준으로 한다.

     

    위의 내용으로부터 알 수 있는 사실은 dx와 dy만 구하면, 두 점에서의 각을 구할 수 있다.

     

    case1. originPos와 destPos의 x좌표와 y좌표가 모두 일치하는 경우

    dx = 0, dy = 0 

     

    case2. originPos의 y좌표와 destPos의 y좌표가 일치하는 경우

    (1). dy = 0, dx > 0

    (2). dy = 0, dx < 0

    case3. originPos의 x좌표와 destPos의 x좌표가 일치하는 경우

    (1). dx = 0, dy > 0

    (2). dx = 0, dy < 0

    case4. 나머지의 경우

    (1). dx > 0 and dy > 0 이면 1사분면

    tangent함수는 1사분면에서 양수값을 갖는다.

    atan(dy/dx) 가 theta값이다.

    (2). dx > 0 and dy < 0 이면 4사분면

    tangent함수는 4사분면에서 음수값을 갖는다.

    atan(dy/dx) + 360를 하면 theta값을 구할 수 있다.

    (3). dx < 0 and dy > 0 이면 2사분면

    tangent함수는 2사분면에서 음수값을 갖는다.

    atan(dy/dx) + 180를 하면 theta값을 구할 수 있다.

    (4). dx < 0 and dy < 0 이면 3사분면

    tangent함수는 3사분면에서 양수값을 갖는다.

    atan(dy/dx) + 180를 하면 theta값을 구할 수 있다.

    2. 두 점 사이의 각도를 구하는 함수

    각도를 구하기 위해서는 atan함수를 이용하면 되는데, 이 함수의 리턴값은 호도법이다.

    즉, 우리가 눈으로 보기에는 호도법 보다는 60분법으로 보는 것이 더 직관적이다.

    이에 따라 두 점 사이의 각도를 구하는 함수는 두 개로 만들어보자.

    하나는 호도법으로 리턴을 하고 다른 하나는 각도로 리턴을 하도록 하자.

    위의 내용을 토대로 함수를 만들면 다음과 같다.

    3. 구현

    프로그램 실행결과1

    프로그램 실행결과2

    originPos는 그대로 두고, destPos를 {3,1}로 두면

    프로그램 실행결과3

    originPos는 그대로 두고, destPos를 {-3,1}로 두면

    프로그램 실행결과4

    originPos는 그대로 두고, destPos를 {1,-4}로 두면

    프로그램 실행결과5

    originPos는 그대로 두고, destPos를 {1,1}로 두면

    프로그램 실행결과6

    originPos는 그대로 두고, destPos를 {2,2}로 두면

    프로그램 실행결과7

    originPos는 그대로 두고, destPos를 {-1,3}로 두면

    프로그램 실행결과8

    originPos는 그대로 두고, destPos를 {-1,-1}로 두면

    프로그램 실행결과9

    originPos는 그대로 두고, destPos를 {3,-1}로 두면

    4. 소스 파일

    main.c
    0.00MB

    'Algorithm with C > Math' 카테고리의 다른 글

    세 점의 방향 판단  (0) 2020.09.11
    벡터의 외적(Cross product)  (0) 2020.09.11
    API를 활용해서 삼각비를 통한 각도 구하기  (0) 2020.09.10
    각도와 호도법의 변환  (0) 2020.09.10
    면적 넓이 구하기  (0) 2020.09.09

    댓글

Designed by Tistory.