[cub3d](2)레이케스팅에 필요한 수학법칙



1️⃣ 삼각함수(trigonometric function)

Trigonometric_function
  • hypotenuse: 빗변
  • opposite: 대변
  • adjacent: 인접한변(밑변)
  • 삼각함수를 이용하여 adjacent에 따른 기둥의 높이(opposite)을 구할 수 있습니다.
  • 기둥의 높이뿐만아니라 기둥의 폭에도 영향을 미칠 것입니다.
  • 아마도 기본적으로 기둥과의 거리를 알고 있는상태에서 삼각함수를 이용하여 나머지 요소의 값을 구하게될 것입니다.
  • Trigonometric_function_used

    2️⃣ 피타고라스의 법칙

    • 피타고라스의 법칙직각삼각형의 빗변을 구하는 대중적인 수학공식 입니다.
    • 우리는 이 공식을 물체(기둥)와의 거리(adjacent)를 구하는데 이용할 계획입니다. Pythagoras's_theorem

    • 위의 그림처럼 두점의 좌표를 알고 있으면 쉽게 피타고라스의 법칙을 이용하여 거리를 구할 수 있습니다.

    < 임시로 구현한 피타고라스식 >

    distanceAB = sqrt((B_x - A_x) * (B_x - A_x) + (B_y - A_y) * (B_y - A_y));

    3️⃣ 각도의 다양한 표현방법

    • 1라디안(radians)은 원의 반지름호의 길이를 같게 했을 때의 각도를 말합니다.
    • 180º약 3.14radian이며 라고 합니다. radian_pie

    • 라디안값 혹은 각도를 구하는 함수를 다음과 같이 간단하게 구현할 수 있습니다. radian_pie_func

    • 이러한 각도계산법을 이용하여 각 광선(ray)의 각도를 구할 수 있습니다.
      (가독성을 위해 javascript문법을 이용 추후의 함수들도 먼저 javasciprt로 구현한 뒤 최종적으로 C언어로 구현할 예정입니다.) use_degree_in_cub3d

    • 우리가 구현할 cub3d의 해상도가 320 x 200이라고 한다면 위와 같이 60도를 320등분한식(라디안변환)을 만들 수 있습니다.
    • 그리고 'rayAngle'라는 변수를 두어 각광선의 각도만큼 순차적으로 늘려가면서 계산을 할 수 있게 됩니다.
    • 320 x 200해상도에서 각광선 사이의 각도는 60º / 320이 될 것입니다.




    © 2021.02. by kirim

    Powered by kkrim