본문 바로가기

전체 글139

컴퓨터 그래픽스(4) - World Transform 이제 실제 쓰이는 예시를 보자. 유니티를 사용해본적이 있다면 이해할 수 있다. 교실 같은 3차원 공간을 예시로 들 수 있다. 교실 공간을 먼저 만들어야할 것이며 강의실 안에는 책상과 의자와 같은 것들을 Polygon mesh로 만들어야할 것이다. 처음에 만들어질 때 특정 좌표계를 기준으로 만들어질것이고 원점 가까이 놓여있을 것이다. 단일한 공간에 배치를 해야하는데 의자와 책상이 겹쳐있으면 안 될 것이다. 이러한 것을 해결하기 위해서 변환이 쓰인다. Coordinate System을 두가지로 구분하는데 Object를 만드는데 쓰인 공간인 Object Space, 단일한 게임 공간인 World Space이다. World Space 에 만들어진 모든 Polygon mesh가 배치되어야한다. Object Spa.. 2024. 1. 10.
컴퓨터 그래픽스(3) - Affine Transform 학교에서 선형대수 관련 수업을 두개나 들었는데... 기억이 안 난다 ㅎㅎ 닉네임을 eigen으로 했는데 기술면접에서 eigen vector도 제대로 설명을 못했다 ㅋㅋㅋㅋㅋ 선형변환이란? 선형 변환은 벡터를 다루는 일종의 규칙으로 두가지 성질을 가진다. 첫 번째는 '가산성'이라고 해서, 두 벡터를 더한 다음에 그 변환을 적용하는 거나, 각각의 벡터에 변환을 적용한 다음에 결과를 더하는 거나 같다는 것이다. 예를 들어, 두 개의 화살표가 있을 때, 이걸 먼저 합치고 나서 방향을 바꾸는 것과 각각의 화살표 방향을 바꾼 다음에 합치는 것이 같은 결과를 가져온다. 두 번째 성질은 '동차성', 이건 벡터에 어떤 숫자를 곱한 다음에 변환을 적용하는 것과, 변환을 적용한 다음에 같은 숫자를 곱하는 것이 같은 결과를 .. 2024. 1. 7.
컴퓨터 그래픽스(2) - Transform composition Scaling, Rotation, Translation 변환 개념은 생략하도록 하겠다. Translation and Homogeneous Coordinators Translation을 살펴보면 주어진 점 x,y를 dx,dy만큼 이동시키는 것이다. 그 과정은 변이벡터 (dx, dy)를 원래 주어진 점에 더하여 벡터의 덧셈으로 표현될것이다. 앞에 것과 다른 점으로 곱셈이 아닌 덧셈으로 표현이 된다는 것이다. 이것을 통일시키기 위해 Homogeneous Coordinates(동차 좌표)를 이용하면 행렬 곱셈으로 나타내는 것이 가능하다. 일단 2차원 좌표 x,y가 주어졌을 때, 세번째 좌표를 1로 할당한다. (x, y) → (x, y, 1) 이것이 Homogeneous Coordinates 이다. 우리는 Ide.. 2024. 1. 7.
컴퓨터 그래픽스(1) - 모델링 서론 시리즈 C 스타트업의 iOS 개발자로 첫 커리어를 시작하게 되었습니다. 지원 당시 채용공고에서 Metal과 같은 저수준 GPU API를 사용하게 될 것이라 명시되어있었습니다. 이와 관련해서 나온 컴퓨터 그래픽스 관련 기술면접 질문은 답변하지 못하여 아쉬웠습니다. 관련 경험이 없었지만 포기하지 않고 iOS에서의 렌더링 사이클과 UIkit과 SwiftUI의 더티영역에 대한 처리 과정 등에 대해 공부했던 내용을 말씀드렸던 기억이 납니다 ㅎㅎ. 그래픽스 관련해서 OpenGL을 먼저 참고해보는 게 좋을 것이라는 면접관님의 조언에 따라 첫 출근전에 이론부터 공부해보고자 합니다. 구립도서관을 열심히 서칭했지만 그래픽스 관련 서적은 찾기가 쉽지 않았습니다. 결국 학교 도서관까지 가게 되었습니다 ㅠㅠ. 3차원 컴.. 2024. 1. 6.
Observer 패턴 vs Publisher/Subscriber 패턴 (1) 데이터 흐름: 입력과 출력 MVC 구조 내에는 두 가지 주요 데이터 흐름이 있습니다: 입력 흐름: 뷰에서 시작하여 사용자 입력을 컨트롤러에 전달하고, 컨트롤러는 이를 처리하여 모델의 데이터를 변경할 수 있습니다. 출력 흐름: 모델에서의 변경 사항에서 시작하여, 이러한 변경 사항이 UI에 빠르게 반영되어야 합니다. 여기서 Observer 패턴과 Publisher/Subscriber 패턴이 중요한 역할을 합니다. NotificationCenter의 MVC 내 역할 NotificationCenter는 전통적인 Observer 패턴보다는 Publisher/Subscriber 패턴에 더 가깝습니다. 그 이유는 ... NotificationCenter는 앱의 다른 컴포넌트 사이에서 느슨하게 결합된 통신 경로를 제공.. 2023. 11. 7.
[Error] Couldn`t be opened 상황 : 새로운 맥북(M1 Pro 16)을 받아서 기존 프로젝트를 clone했는데 위와 같은 에러가 발생하며 실행되지 않음. 추론 : 1. 이전에 push한 코드에서 충돌이 발생한 경우. 2. Xcode 버전 문제 해결 : Xcode Update를 통해 해결. 프로젝트 파일을 실행시켜보니 위와 같은 에러 메시지로 버전 문제라는 것을 명시해줌. 2023. 7. 4.
[Data Structure]Queue와 Stack 기본원리 선형 데이터 구조로 데이터를 저장하고 접근하는 방식에 따라 구분함. Stack 스택은 Last-In-First-Out (LIFO) 원칙을 따르는 데이터 구조 Queue 큐는 First-In-First-Out (FIFO) 원칙을 따르는 데이터 구조 시간복잡도 Stack 전부 O(1) Queue 전부 O(1) 사용 예시 Stack 함수 호출 관리 함수가 호출되면 함수 관련 record(지역변수, 매개변수, 메타데이터 등)가 Call Stack에 push됨. 함수가 반환되면 record가 스택에서 pop됨 DFS(깊이 우선 검색) 그래프 및 트리에 대한 DFS 순회 알고리즘을 구현 노드를 스택에 푸시하고 팝하면 역추적하기 전에 경로를 따라 모든 노드를 방문하여 깊이 우선 방식 실행 취소/다시 실행 기.. 2023. 4. 28.
728x90