행렬 함수
행렬은 고정된 수의 행과 열로 배열된 숫자의 모음입니다. 일반적으로 숫자는 실수이지만 항상 그런 것은 아닙니다. 아래 이미지는 4행 4열로 구성된 행렬의 일반적인 구조를 보여줍니다:
행 | 열 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
1 | 4 |
2 | 1 |
2 | 2 |
2 | 3 |
2 | 4 |
3 | 1 |
3 | 2 |
3 | 3 |
3 | 4 |
4 | 1 |
4 | 2 |
4 | 3 |
4 | 4 |
위의 행렬 예제에서, 행 1 열 1의 요소는 값 "1"이고, 행 2 열 3의 요소는 값 "4.8"입니다. 행렬은 GameMaker에서 자체 데이터 타입이 없으며 항상 배열에 저장됩니다.
일반 행렬 함수
행렬은 많은 것에 중요하지만, 주로 3D 공간을 다루는 데 사용됩니다. 예를 들어, 카메라 뷰를 설정하거나 모델을 변환하는 데 사용할 수 있습니다. GameMaker에서 행렬을 다루기 위해 다음과 같은 함수가 존재합니다:
함수 이름 |
---|
matrix_get |
matrix_set |
matrix_build |
matrix_multiply |
matrix_build_identity |
matrix_build_lookat |
matrix_build_projection_ortho |
matrix_build_projection_perspective |
matrix_build_projection_perspective_fov |
matrix_transform_vertex |
행렬 스택 함수
다음 함수는 행렬 스택을 사용하는 데 필요한 함수입니다. 이는 DS 스택과 유사하지만 행렬 전용으로 설계되었습니다. 3D 장면을 생성할 때 여러 행렬 연산(예: 변환)을 연속적으로 적용하는 편리한 방법입니다.
함수 이름 |
---|
matrix_stack_is_empty |
matrix_stack_clear |
matrix_stack_set |
matrix_stack_push |
matrix_stack_pop |
matrix_stack_top |
활용 예제
아래는 행렬과 관련된 다양한 활용 예제입니다.
// 행렬 생성 및 설정
var my_matrix = matrix_build(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
// 행렬 곱셈
var result_matrix = matrix_multiply(my_matrix, my_matrix);
// 카메라 뷰 설정
var view_matrix = matrix_build_lookat(0, 0, 0, 0, 0, -1, 0, 1, 0);
// 정점 변환
var transformed_vertex = matrix_transform_vertex(view_matrix, vertex);
이 예제들은 행렬을 생성하고, 곱셈을 수행하며, 카메라 뷰를 설정하고, 정점을 변환하는 방법을 보여줍니다.