목록Technology (216)
logbook

1. 상수상수는 변수와 달리 고정된 값을 다루기 위해 사용되는 개념입니다.상수로 정의된 값은 코드가 실행되는 동안 변경되지 않는다는 것을 보장할 수 있기 때문에 데이터의 신뢰성을 높일 수 있습니다.이 때문에 원주율(PI), 랜덤 확률 등과 같이 코드 내에서 고정적으로 사용되는 공통 값을 다룰 때는 상수로 정의하여 가독성을 높이는 방안을 주로 사용합니다. C++에서는 이 상수를 다룰 때 const와 constexpr이라는 두 가지 접근성을 보장합니다.여기서는 const와 constexper이 어떻게 다른지 간략히 살펴봅니다. 2. const먼저 const는 변수와 함께 사용되며 const는 함수나 생성자를 정의할 때는 사용되지 않습니다.const를 통해 정의된 값은 컴파일 타임 또는 런타임에 값이 결정됩..

1. 메모리 주소와 포인터포인터는 값의 복사가 아닌 값의 참조를 기반으로 동작합니다.C++는 기본적으로 값을 다룰 때 복사 연산(Call by Value)을 사용하기 때문에 원본 값의 오염을 방지하고 메모리 낭비를 방지하기 위해서는 포인터에 대한 이해가 매우 중요합니다.포인터 변수에는 값 그 자체가 아닌, 값이 저장된 메모리 상의 주소를 담을 수 있습니다. 메모리 주소를 담을 수 있는 변수가 존재한다면, 포인터 변수에 담을 메모리 주소값 그 자체를 표현하는 것도 가능해야 할 것입니다.이러한 작업을 수행하기 위해 & 연산자와 * 연산자가 등장합니다. 2. & 연산자와 * 연산자로 포인터 다루기포인터 변수는 값이 아닌 값의 주소를 저장하므로, 일반적인 변수와 다르게 취급해야 합니다.포인터 변수를 선언할 때..

1. non-type templateC++에서 제네릭 함수를 구현하기 위해 사용되는 template은 아래와 같이 호출 시 타입을 지정하여 호출하는 것이 기본적인 사용법입니다.templateT sum(T n1, T n2) { return (n1 + n2);}int main() { int x = sum(1, 2); printf("%d\n", x); return 0;}제네릭은 사용자가 지정한 타입에 맞게 유동적으로 연산을 수행할 수 있으며 코드의 재활용성을 높이고, 다양한 상황에 맞는 유연한 대응이 가능해 활용도가 높은 고급 기능 중 하나입니다.non-type template은 위 코드와 같이 제네릭 함수를 사용할 때 기호를 사용해 지정할 타입을 명시해 주는 것 대신, 암시적으로 인자..

1. strcpy( )strcpy( )는 문자열을 복사하는 함수 중 하나로, 널 문자(\0)을 만날 때까지 src에서 dest로 복사하는 함수입니다.문자열 전체를 복사하지만, 길이 제한이 없어서 버퍼 오버플로우가 발생할 위험이 있습니다.char buffer[100];std::strcpy(buffer, "Hello, world!"); 2. strncpy( )strcpy( ) 함수와 달리 strncpy( ) 함수는 지정된 길이만큼만 복사하는 것이 가능합니다.이 때문에 strcpy( )보다 더 안전하게 사용할 수 있지만, n바이트에 도달할 때까지 복사를 멈추지 않기 때문에 널 문자(\0)를 수동으로 넣어주어야 합니다.char buffer[100];std:strncpy(buffer, "Hello, world..

1. OnDisable( )OnDisable( ) 메서드는 객체가 파괴(Destroy)되거나, 비활성화(SetActive(false))되는 상황처럼 대상이 '사라질 때' 발동되는 이벤트 메서드입니다.이 때문에 OnDisable( )은 객체가 사라지면서 가지고 있던 참조나 변수 값들을 '정리'하기 위해 주로 사용됩니다.이벤트 리스너를 삭제하거나, 변경되었던 변수의 값들을 초기화하는 것이 대표적입니다.그렇다면 OnDisable( ) 메서드가 호출되는 시점을 어떻게 이해해야 할까요? 2. OnDisable( )이 발동되는 시점아래와 같이 싱글턴 타입의 클래스를 간단히 생성하고, OnDisable( )을 다른 클래스에서 호출합니다.public class GameControlApplicationQuitCheck..
1. 타인과의 상호작용가상 환경 속에서 타인과 함께 활동하는 것은 VR 경험의 완성도와 활동 범위를 대폭 향상할 수 있기 때문에 중요한 역할을 한다.단순하게 가상의 공간을 타인과 함께 공유하는 것부터 함께 어떠한 문제를 해결하거나, 놀이를 즐기는 등 애플리케이션의 목적에 따라 상호작용 방법과 요구되는 기술 등이 크게 달라진다. 1.1. 공유 경험타인과 정보와 경험을 공유하는 목적을 지닌 상호작용이다.여기서 주의할 점은 공유(Share)와 협업(Collaborative)은 동일한 의미가 아니라는 점이다.즉, VR 경험을 공유한다고 해서 타인과 협업하는 것이라고 단정 지어서는 안 된다.단적인 예시로 과 이 동일한 경험을 제공하는 애플리케이션이라고 취급하지는 않을 것이다.경험은 한 명만 수행하고 나머지는 그 ..
1. 가상 세계에서의 탐색(Navigating)현대인과 자동차의 영원한 친구, 내비게이션은 우리가 어느 장소를 찾아갈 때 어떻게 움직여야 하는지를 알려주는 역할을 한다.걸어가거나, 운전을 하거나, 스키를 타거나, 스케이트를 타거나, 비행기를 몰 때도 우리가 가야 할 방향과 길을 찾는 탐색 과정은 항상 존재한다.이는 가상 세계에서도 마찬가지이다.내비게이션은 체험자가 어딘가로 이동하기 위해 길을 찾는 길 찾기(Wayfinding)과 찾아낸 길을 통해 실제로 움직이는 이동(Travel)으로 구성되어 있다.이를 그림으로 표현하면 다음과 같다. 1.1. 길 찾기 (Wayfinding)길 찾기는 자신이 어디에 위치했는지, 목적지로 향하는 경로를 파악하는 방법을 의미한다.자신이 어디에 있는지는 일종의 레퍼런스 프레임..
1. 가상 공간에서의 조작가상 세계에서 상호작용이 가능할 때 얻을 수 있는 이점 중 하나가 해당 공간 내에 존재하는 다양한 사물과 상호작용하거나, 조작할 수 있다는 것이다.현실 세계에서 말하는 조작은 어떠한 사물에 직접 힘을 가하는 방식으로 구현되지만, 가상 세계는 이보다 더 많은 자유도를 보장한다.가상 현실에서 조작은 선택 후 액션이라는 기본적인 두 단계를 거치도록 설계되어 있다.어떠한 것을 조작할 것인지를 지정하고 어떻게 조작할 것인지를 수행하는 것이다.다만, 여기서 의미하는 선택은 꼭 손을 이용한 동작일 필요는 없다.눈을 사용할 수도 있고, 별도의 조작용 컨트롤러가 동원될 수도 있다. 2. 조작 방법 Blending Direct and Indirect Interaction: A Concept fo..