게임 개발 일지/내일배움캠프 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