본문 바로가기

C++197

[Programmers] (2018 KAKAO BLIND RECRUITMENT) Lv 2. [3차] n진수 게임 https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; string to_bit(int num, const int& bit) { string ans = ""; string hex[] = { "A", "B", "C", "D", "E", "F" }; while (num > 0) { const auto& val = num % bit; ans += (val >= 10) ? .. 2023. 7. 3.
[Programmers] (2018 KAKAO BLIND RECRUITMENT) Lv 2. [3차] 압축 https://school.programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] school.programmers.co.kr #include #include #include using namespace std; #define ALPHABET 64 vector solution(string msg) { vector answer; unordered_map m; for (size_t i = 0; i < msg.size();) { int j = 2; while (m.count(msg.subs.. 2023. 7. 3.
[DirectX12 - Quaternion] Chapter 01. 오일러 각 쿼터니언은 4원수 유니티에서 오일러 방식으로 보여줌 오일러 방식이란, x축 y축 z축 하나씩 가지고 있고, 호도법이 아닌 우리가 일반적으로 각도로 설정한 것을 얘기한다. 그렇게 각각 회전하는 각도를 입력해서 조합한 다음, 물체를 회전시킬수있다 라는게 오일러 방식의 아이디어다. 회전은 우리가 오일러방식의 회전을 사용하고있었는데 여기엔 문제가있다. 각기 회전들이 결합할 때 문제가 생긴다 만약 x축 각도를 90으로 해놓고, y축 회전을 할 시, y축회전방향이 아닌 z축회전방향으로 회전을 한다. 이런걸 짐벌락 현상이라 한다. = 세 축중 하나의 축이 먹통이 되는 현상 회전은 이동과 다르게 하나의 축으로 회전을 할 때, 다른축도 영향을 받아서 같이 회전을 하게 되는데 운이 안좋게도 어떤 두축이 겹치는 상황이 발생.. 2023. 7. 1.
[DirectX12 - Vector & Matrix] Chapter 06. Projection, Screen 변환 행렬 PROJECTION SPACE (HOMEGENEOUS CLIP SPACE) 투영행렬 3D화면 좌표계를 2D화면 좌표계로 만드는 변환 행렬 원근투영 near(n) 와 far(f) 가 있다. 그 안에 들어가는 것들만 보여준다. 투영 좌표게는 정사각형 비율은 1로 들어간다. x와 y는 최소 -1,-1 좌표에서 최대 1,1, 좌표다 그래서 뷰에서 투영 좌표계로 들어가려면 어떤 값이던 간에 적절히 비율을 따져서 연산하게 돼서 -1 ~ 1 사이의 점으로 표현이 돼서 나중에 화면의 비율을 이용해서 화면에 물체를 그려준다고 생각하면 된다. 투영좌표계에서 x와 y는 -1에서 1 사이의 범위를 표현한다했는데, 깊이(z)는 0 ~ 1까지를 표현한다 또 이 과정에선 최종적으로 물체를 그릴지말지 체크하는 DSV(뎁스 스텐실 뷰.. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 05. World, View 변환 행렬 로컬 스페이스 -> 월드 스페이스 -> 뷰 스페이스 투영 - 카메라에 찍힌 모든 물체들을 비율에 맞춰 화면안에다가 맞게 찍히게 변화하는 단계 화면안에 들어오는 것들의 범위를 Clip Space 라 한다. 마지막 단계로 스크린에다가 그려주는 것을 뷰포트 라고 한다. 해상도마다 비율이 다르니 비율에 맞춰주는 작업들. 로컬스페이스 -x,y,z 쪽을 순서대로 right, up, look 벡터라고 한다. 로컬스페이스에서 월드 스페이스로 갈려며 월드행렬을 해주면 된다. 반대로 월드스페이스에서 로컬 스페이스로 갈려며 월드역행렬을 해주면 된다. 월드행렬 (x, y, z, 1) [right.x right.y right.z] = (X, Y, Z, 1) 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 04. Scale, Rotation, Translation 변환 행렬 벡터를 변환시킬 떄 하는 3총사 Scale Rotation Translation SRT라 함 (x, y, z) x (3x3 행렬) = 1 x 3 3d상에서 어떤 문체를 2d화면상으로 옮기는 최종적으로 투영하는 수학적으로 연산을 하게 될건데 그걸 위해서는 위에 말한 3가지처럼 다양한 연산이 필요하다. 근데 xyz 벡터에다 3x3행렬을 사용했을 때는 Translation을 표현한다고자하면 각각의 원소 계산에 x y z의 연산이 들어가기때문에 이동 변환을 할수없다. 그래서 게임에서 계산할 때는 인게임에서는 xyz 3개만을 사용하지만, 4차원으로 하나 더 만들어줘서 (x, y, z, w(1)) 로 사용한다. 이렇게 가상의 4차원 공간인것마냥 추가해줘서 사용하는 것을 동차좌표계라 한다. w가 의미를 갖는다기보단 .. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 03. 행렬 벡터가 행렬을 갖다오게되면 변환이 된다. 사실은 우리의 좌표 자체는 위치 벡터로 관리하지만, 그 벡터가 위치가 변환하는 과정 자체는 행렬로 묘사하는 걸로 볼 수 있다. 그리고 행렬의 특징이 여러개를 준비해서 하나하나하나 거칠 필요 없이 행렬들끼리도 하나로 합쳐서 모든 동작이 한번에 일어날 수 있게 합칠 수 있다. 행렬의 정의 쉽게 생각하면 2차원 배열 안에는 스칼라 값이 들어가있다고 보면 된다. 행수와 열수 행 row. 열 col 2 x 3, 4 x 4 다양하다 [1 3] [4 2] 에 K를 곱하면 [k 3k] [4k 2k] 그리고 행렬의 덧셈은 포맷이 똑같아야한다 서로 2x2 라든지. 각각의 위치에 맞는 것들끼리 더해주면 된다. 단순함 사실 덧셈은 활용할 상황이 많이 없다 게임속에선 행렬의 곱을 거의 .. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 02. 벡터 스칼라 : 크기와 방향을 가지는 벡터에 대비하는 개념으로, 크기만 있고 방향을 가지지 않는 양을 말한다. 단위벡터 : 단위 길이 (1)를 갖는 모든 벡터 정규화(노멀라이즈) : 단위벡터를 만드는 일종의 함수 기저벡터 : 벡터 공간 V의 basis는 V라는 공간을 채울 수 있는, 선형 관계에 있지 않은 벡터들의 모음이다. 즉, 서로 독립인 벡터들을 의미한다. 벡터는 (크기)와 (방향) 만을 가진다. = 일반적으로 기하 벡터 라 한다. 벡터가 기본적으로 알고있는 의미는 위의 의미가 맞긴한데, 게임에서 사용할 떄는 다른 이걸 다른 용도로 더 활용을 한다. 벡터를 사용하는 방법이 두 가지라고 보면 된다. 하나는 위에 말한 기하 벡터. 그리고 말한 한 가지는 어떤 물체의 좌표다. 벡터는 x, y, z로 이루어져 .. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 01. 삼각함수 2023. 6. 30.
[DirectX12 - Particle] Chapter 01. Compute Shader GitHub : https://github.com/developeSHG/DirectX12-Particle/commits/01.Compute_Shader GitHub - developeSHG/DirectX12-Particle: DirectX12 - Particle DirectX12 - Particle. Contribute to developeSHG/DirectX12-Particle development by creating an account on GitHub. github.com dx를 사용한다는 거 자체가 gpu한테 렌더링과 관련된 부분을 외주시키는 개념이라 했었다. 렌더링 파이프라인을 이용해 다양한 물체를 띄웠었다. cpu와 gpu의 가장 큰 차이는 코어의 수인데, 인간으로 치면 두뇌에 해당하는 al.. 2023. 6. 29.