본문 바로가기

전체 글137

컴퓨터 그래픽스(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.
Linked List와 Array, 그리고 Swift에서의 Array. Linked List 여러 구조체 인스턴스를 Chain처럼 줄줄이 포인터로 연결한 자료구조(선형, 일차원 형태) 연결에 사용된 포인터 숫자가 한개이고 자기 다음을 가리키는 것이 특징 구현하기(c++) Node는 데이터를 담기위한 컨테이너가 됨. (next)포인터를 이용해서 다른 노드를 포인팅함. nullptr를 가진 노드가 마지막 노드가 됨. #include // 노드 구조체 정의 struct Node { int data; Node* next; Node(int data) : data(data), next(nullptr) {} }; // 단일 연결 리스트 클래스 정의 class SingleLinkedList { public: Node* head; SingleLinkedList() : head(nullptr.. 2023. 4. 26.
[iOS] Compositional Layout & Sticky Header를 적용하면서(UIKit) 새로운 사이드 프로젝트의 MainPage의 뷰를 맡아서 구현해보려고 합니다. UIKit으로 구현해야할 뷰의 대략적인 모습은 아래와 같습니다. 가로 방향의 카드 리스트 형태의 뷰, 세로방향의 판매품목 리스트 형태의 뷰, 가로 방향의 유저 프로필 리스트 등의 다양한 특징을 가진 셀들이 하나의 리스트 뷰 안에 들어가야합니다. 또한 중간에 Sticky Header형태의 탭바가 들어가 있어서 해당 섹션의 리스트가 보일때 탭바는 스크롤시 사라지지 않고 상단에 유지되어야합니다. 처음엔 UIKit으로 구현하게 된다면 NestedScrollView로서 UITableView를 사용하였고 그 안에 각각의 셀의 뷰에 UICollectionView, TableView를 배치하여 구현하였습니다. 하지만 일반 TableView와 .. 2023. 3. 10.
728x90