오늘은 Oculus Interaction SDK와 핸드트래킹을 사용해 위아래로 움직일 수 있는 레버 기능을 만들어 보도록 하겠습니다! Meta Developers developers.meta.com ==> 현재 사용하려는 조이스틱은 위 사진처럼 구성이 되어 있습니다. 이제 제가 하려는 것은 레버 머리 부분을 잡고 위아래로 움직이는 기능을 넣고 싶습니다. 간단하게 테스트를 위해 Meta XR Interaction SDK OVR Samples -> Example Scenes-> HandGrabUseExamples 씬 안에 있는 OVRCameraRig 프리펩을 가져옵니다 자 그러면 이제 레버를 손으로 잡고 인터렉션을 하기 위해 위 사진과 같이 적절한 콜라이더와 Rigidbody, Grabbable, Hand..
전체 글
동적 계획법⇒ 복잡한 문제를 단순한 하위 문제로 나눠서 접근하는 방법⇒ 중복 계산을 줄이기 위해, 이전에 구한 해를 활용 이전의 해를 활용해야 효율적인 문제의 조건최적 부분 구조문제의 최적 해결책이 하위 문제의 최적 해결책으로부터 구성되는 경우중복 부분 문제동일한 하위 문제가 여러번 계산 됨 예시 1 : 팩토리얼 예시 2 : 피보나치 수 동적 계획법 적용하는 법 예시 1 : 계단 오르기 ⇒N개의 계단이 존재하고, 한번에 1개 혹은 2개의 계단을 오를 수 있음. 계단을 오르는 방법의 총 수는? 1. 예제 입력으로 출력을 만드는 과정을 직접 손으로 작성2. 과정을 일반화. 이때 최종해를 구하는 과정을, 이전해를 구하는 과정을 통해 나타낼 수 있는지 확인한다.3. 2번의 과정에서 이전해를 구하는 과정이 ..
코테에서 정렬은 언제 필요한가? 대표적인 정렬 알고리즘 삽입 정렬 왼쪽 : 정렬된 영역 / 오른쪽 : 비 정렬된 영역정렬된 영역이 점점 확장되어 비 정렬된 영역이 사라짐비 정렬된 영역의 맨 앞의 원소를 정렬된 영역의 적절한 곳에 추가용도: 작은 데이터 셋에서 효율적이며, 이미 부분적으로 정렬된 배열에서 높은 성능을 보입니다.삽입정렬 과정 1. 첫 번째 원소를 정렬된 부분으로 간주합니다. 2. 다음 원소를 정렬된 부분과 비교하여, 올바른 위치에 삽입합니다. 3. 모든 원소가 정렬된 부분에 삽입될 때까지 2의 과정을 반복합니다. 삽입 정렬의 최고 / 최악 케이스 최선의 경우: O(n) - 이미 정렬된 배열의 경우평균의 경우: O(n^2) - 일반적인 경우최악의 경우: O(n^2) - 역순으로 정렬된 ..
백트래킹 개념⇒ 가장 최근에 방문했던 노드로 다시 돌아감 (DFS에서 사용한 것 처럼)⇒ 완전 탐색하지 말고, 내가 찾는 답일 가능성이 있는 경우에만 탐색백트래킹을 푸는 과정상태 정의 : 문제의 각 단계에서 가능한 상태를 정의.유망함수 : 현재 상태가 유망한지 판단. 유망하지 않으면 더이상 탐색 하지 않음.해결책 확인 : 현재 상태가 문제의 해결책인지?재귀 호출 : 유망한 상태로 이동하면서 문제 해결 (유망할 때 DFS 진행)/*상태 정의 : 문제의 각 단계에서 가능한 상태를 정의유망 함수(isPromising) : 현재 상태가 유망한지 판단, 유망하지 않으면 더 이상 탐색 x해결책 확인(isSolution) : 현재 상태가 문제의 해결책인지 판단재귀 호출 : 유망한 상태로 이동하면서 문제 해결*/// ..
그래프의 개념 및 종류 =⇒ 노드와 간선을 이용한 비선형 자료구조목적에 따라 간선의 가중치나 방향이 있을 수 있음그래프의 구현인접 행렬#include using namespace std;// 인접 행렬의 노드 개수 (고정)const int numNodes = 2; // 인접 행렬 배열int adjMatrix[numNodes][numNodes];/*최악의 경우 1 -> 2 -> 100 일때 100*100의 배열을 만들어야함*///그래프 초기화void initializeMatrix() { for (int i = 0; i 여기서 V는 노드의 개수입니다.- 간선이 존재하는지 확인하는 작업은 O(1)의 시간 복잡도를 가집니다.- 모든 간선을 탐색하는 작업은 O(V^2)의 시간 복잡도를 가집니다.최종적인 인접..
상호 배타적 집합 ⇒ 교집합이 없는 집합 관계 집합 표현하기고려사항1. 특정집합 원소들이 하나의 집합의 원소라는 것을 알 수 있어야함 ex) a={1,2,3}일때 각 원소가 집합 a에 속한다는 걸 알아야함 2. 각 집합 간 다른 집합이라는 것을 알 수 있어야함 ex) a={1,2,3} b= {4,5,6} 두 집합이 다른 집합이라는걸 알아야함 3. 특정 원소가 어느 집합에 속하는지 알아야함 ex) a={1,2,3} b= {4,5,6} 원소 5가 집합 b에 속하는걸 확인 가능해야함 4. 두개의 집합을 하나로 합칠 수 있어야 함 ⇒ 각 집합의 대표원소(루트노드) 를 만들면 해결! 집합의 연산집합의 연산 find⇒특정 노드의 루트노드를 확인하는 연산특정 노드로 부터, 루트노드가 나올때 까..