게임 개발 일지/내일배움캠프 TIL

Math.sqrt / 벡터 이해하기

빛하_ 2023. 11. 29. 19:20

 

 

 

 

알고리즘 코드카타

 

#19 정수 제곱근 판별

    // 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
    // n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
    internal class _019_FindSquareNum
    {
        public long solution(long n)
        {
            long x = (long)Math.Sqrt(n);
            return (x*x == n) ? (x+1)*(x+1) : -1;
        }
    }

 

Math.Sqrt 라는 메서드를 사용하면 변수의 제곱근을 출력할 수 있다.

삼항 연산자 (조건? 참 출력 : 거짓 출력) 사용은 이제 익숙하다.

 

 

개인 과제 해설

 

<벡터의 이해>

벡터는 크기와 방향이 있다.

벡터의 특징 : 크기와 방향이 같다면 어떤 위치에 있어도 같은 벡터이다.

 

두 벡터의 차이

A = 벡터 (x1, y1)

B = 벡터 (x2, y2) 일 때

A-B는 벡터((x1-x2),(y1-y2))이다.

이 때,  벡터((x1-x2),(y1-y2)) 는 B에서 A로 향하는 벡터와 일치한다.

즉, B에서 A로 향하는 벡터의 크기와 방향을 알 수 있다.

게임에 적용시킨다면, (ex. 몬스터가 플레이어를 쫓아오는 상황을 표현할 때)

두 오브젝트 간 벡터값의 차이를 이용해 방향과 거리를 표현할 수 있다.

 

벡터로 오브젝트 속도 조절

같은 위치에서 시작한 벡터이더라도 특정 값을 곱함으로써 그 값에 따라 길이(크기)를 조절할 수 있다.

더 큰 벡터가 더 빠른 속도의 오브젝트를 표현한다.

 

단위벡터

크기가 1인 벡터, 방향만 남아있다.

정규화 : 서로 다른 크기의 벡터를 가진 오브젝트를 계산하기 편하게 만드는(단위벡터화 하는) 작업 

 

벡터의 방향이 필요할 때 : normalized

벡터의 크기가 필요할 때 : magnitude