좋은 코드에 대한 딜레마.
2023. 3. 27. 03:32
삽질/뻘짓
유지보수가 쉽고, 성능이 뛰어난 코드를 좋은 코드라고 한다. 내가 만든 코드가 유지보수가 쉽다 함은, 그 코드가 다른 개발자들이 읽기 쉽고, 그 코드에 쓰인 기술이 쉬워서, 내가 없어도 다른 개발자들이 새로운 기능을 추가하거나, 버그를 수정하기 쉽다는 말이다. 그러나 성능과 유지보수는 trade-off 양자택일이다. 예를 들어, 성능을 잡기 위해서, 메모리 복사 횟수를 최소화하는 코드를 작성한다고 하자. 결국에 그 코드는 기계 친화적일 수밖에 없다. 어셈블리어로 작성됐을 수도 있고, 컴파일러 최적화까지 고려해서 작성되었을 것이다. 그러나 대부분의 개발자들은 균등히 똑똑하지 않다. 다른 예로는, 기술이 발전한 경우, 즉 언어차원에서 새로운 문법이 도입되어, 읽기 쉽고 성능이 좋아졌지만, 개발자가 그 기술을..
2D 극좌표계에서 점 입자의 운동
2022. 11. 3. 13:38
삽질/수학
극좌표계에서 좌표는 중심각(theta)과 원점에서부터의 거리(R)로 좌표를 표현한다. 카테시안 좌표계의 x축을 R, y축을 P로 대응하면 서로 변환할 수 있음을 알 수 있다. $$r = \vert r \vert R = r(cos\theta, sin\theta)$$ $$\dot{P} = \dot\theta P, \dot{P} = -\dot\theta R$$ P는 R을 -90도만큼 쉬프트한 벡터이기 때문에, 다음과 같은 관계가 성립한다. $$\begin{bmatrix}\dot{R}\\ \dot{P} \end{bmatrix} = \begin{bmatrix}0 & \dot \theta \\ -\dot \theta & 0 \end{bmatrix} \begin{bmatrix} R \\ P\end{bmatrix}$$..
2D 카테시안 좌표계에서 점 입자의 운동
2022. 11. 2. 17:29
삽질/수학
엔진에서 어떤 물리 시스템(계)을 시뮬레이션하려면, 수치 해석적으로 접근해야 되고, 시간에 관한 함수로 나타낼 수 있어야 한다. 2차원 좌표계에서, 한 입자의 시간에 따른 위치를 r(t)라고 하겠다. $$r(t) = x(t)\hat{i} + y(t)\hat{j}$$ 위치를 미분하게 되면, 속도가 된다. $$v(t) = \dot{r} = \dot{x} + \dot{y}$$ 거리가 s라면, 속력은 다음과 같다. $$\vert v \vert = \dot{s} = {ds \over dt}$$ 가속도는 다음과 같다. $$a(t) = \dot{v}= \ddot{r} = \ddot{x}\hat{i}+\ddot{y}\hat{j}$$ 탄젠셜 벡터(접선 벡터)를 T, 노멀 벡터(법선 벡터)를 이라고 한다면 $$T(t) =..
[DirectX12] 1.스키마 & VS 초기 세팅
2022. 10. 29. 12:44
삽질/뻘짓
스키마는 다음과 같다. 일단은 크로스 플랫폼을 지원하지는 않는다. 만약 크로스 플랫폼을 지원한다면, Unreal처럼 엔트리포인트에 서페이스 함수를 둬서, 플랫폼 별로, 진입점을 호출하는 것이다. 엔진 클래스를 따로 만들고, 윈도우를 생성할지, 아니면, 언리얼처럼 엔진 루프를 실행할지, 향후에 어느 구조가 더 좋을까? 초기 세팅 1. Visual Studio 2022에서 빈 프로젝트(이름은 Client)를 생성한다. 2. Client의 프로퍼티에서 서브시스템을 Windows로 바꾼다. 3. 솔루션을 오른클릭하고, DLL 프로젝트(이름은 Engine)를 생성한다. 4. Client를 오른 클릭하고, 빌드 오더, 빌드 디펜던시를 설정하는데, Engine을 먼저 빌드하고, Client를 빌드하게 한다. 5. C..
DX11 or DX12 당신의 선택은?
2022. 10. 28. 17:49
삽질/뻘짓
D3D11 D3D12 Resources ID3D11Resource ID3D11Buffer ID3D11Device::CreateBuffer ID3D11Texture1D ID3D11Device::CreateTexture1D ID3D11Texture2D ID3D11Device::CreateTexture2D ID3D11Texture3D ID3D11Device::CreateTexture3D ID3D12Resource ID3D12Device::CreateCommittedResource (Committed : Virtual address space with physical pages for the resource) Resources(tiled) D3D11_RESOURCE_MISC_TILED D3D11_RESOURCE..
permutation
2022. 10. 27. 14:50
삽질
#include #include using namespace std; void printVec(vector& vec){ for(auto& ele : vec){ cout
정형 데이터 vs 비정형 데이터
2022. 10. 6. 04:40
삽질/뻘짓
정형데이터 사례 관계형 데이터 베이스 시스템 - 디자인 타임에 데이터 구조가 정의되는 형태(시스템에 정보가 로드되기 전에 이미 설계되어있음) Microsoft SQL Server Azure SQL Database Azure SQL Data Warehouse 데이터 구조 관계형 모델 테이블 구조 열너비 및 데이터 형식 쿼리 언어 T-SQL(Transact-SQL) 단점 데이터 요구 사항이 변경될 때마다 변경되어야 하므로, 니즈에 따른 대응 속도가 느림 새로운 열이 추가되면, 기존의 모든 레코드를 대량으로 업데이트 해야함 비정형 데이터 사례 비정형 시스템, 비관계형 시스템, NoSQL 시스템 - 디자인 타임에 데이터 구조가 정의되지 않으며, 데이터가 프리미티브 타입(바이너리 파일, 오디오 파일, 이미지 파일..
언리얼 네이밍 컨벤션
2022. 8. 18. 15:53
삽질
https://docs.unrealengine.com/5.0/en-US/recommended-asset-naming-conventions-in-unreal-engine-projects/