Programming
-
10. Tactical AIProgramming/그래픽스 2023. 3. 20. 23:00
지난시간 AI for an agent 하나의 AI를 컨트롤한다 센서, 메모리, 리즈닝코어(그 다음 액션 플래닝), 액션 AI for a strategy agent 를 위해서는 센서가 그 주변만 보면 된다 전략에서는 agent 전체, 전반적인 중간중간의 목적을 알아야함 중간중간 목표가 최종 목표에 기여하도록 짜야한다 agent 를 위한 것이 strategy 에 적용할 수 있을까? agent 에서는 순서적인 영향이 크지만 strategy는 순서를 설정하기 어렵다 agent 로는 표현하기 어려운 부분을 strategy 에서 구현하는 것이다 Tactical AI Tactic 의 정의 어떤 목표를 달성하기 위해 해야하는 operation 들의 순서 sequence 요소 초기 상태(initial state) 목표 ..
-
9. AI Part 2Programming/그래픽스 2023. 3. 20. 22:56
서론 지금까지 input, 시뮬레이션 게임월드 랜더링 - 애니메이션 네트워크 지난시간 게임에서의 AI 지능적인 행위를 컴퓨터가 시뮬레이션한다 지능적인 것? 규칙이 있고, 규칙, 주변 상황에 따라 이루어진다 주변 상황을 파악하는 것이 필요하다 주변 상황에 상관없다면 그냥 로봇이다 게임에서의 AI 추가적인 고려사항 : 성능! 성능이 빨라야한다 AI 가 느리면 게임 월드에 반영이 느려지고, 반응성이 떨어질수록 플레이어가 반응하기 쉬워지면서 재미도 떨어진다 성능이 중요하다. 조금 덜 지능적이더라도 빠른것이 중요하다 외관상 그럴듯하면 된다 수준에 따라 범위를 제한한다 AI 의 종류 AI for Agent 하나를 컨트롤한다 구성요소 센서 : 주변의 정보를 파악한다 메모리 : 새로운 정보를 비교하기 위한 데이터 리즈..
-
Euler vs QuaternionProgramming/그래픽스 2023. 3. 20. 22:53
1. Euler 1) 정의 물체가 놓인 방향을 3차원 공간에서 표현하기 위한 방법 (x,y,z) 축에서의 회전 각도로 정의한다 각도는 일반적으로 오른손 법칙 에 따라 정의됩니다 . 즉, 축의 양의 방향에서 볼 때 시계 방향으로 나타나는 회전을 나타낼 때 양수 값을 가지며 회전이 반시계 방향으로 나타날 때 음수 값을 갖습니다. 2) 특징 오일러 각도는 회전한 축을 기준으로 다음 회전을 한다 3) 장점 3차원 상의 물체의 방향(orientation)을 3개의 파라미터만으로 간결하게 표현할 수 있다 대략적인 방향에 대한 직관적인 정보를 준다 4) 단점 단점 1 : Gimbal Lock 같은 방향으로 두 회전 축이 겹치는 경우 해당 2개의 축이 더이상 분리되지 않는 고정 상태를 말한다 세 개의 축을 동시에 계산..
-
인프런 C++ 프로그래밍 입문 : 객체지향Programming/인프런 C++ 2023. 2. 20. 22:02
[인프런] C++ 프로그래밍 입문 을 보고 정리하는 글 객체지향의 시작 C++ 은 C 기반으로 다른 기능들을 탑재하다보니 절차와 객체 사이 어딘가에 있다 Class 클래스를 정의하는 것 자체로는 메모리를 차지하지 않는다 C++ 에서 class는 struct 와 은닉설정만 다르다 클래스 안에 함수를 정의해도 되긴하지만, 밖에 빼서 정의할 때에는 :: 로 클래스명을 정의한다 데이터와 동작을 함께 정의한다 instantiate : 객체를 만든다 클래스 함수 내부에서 매개변수인지, 멤버변수인지 표시하기 위해 규칙이 있는 경우가 많다 m_, m, _(언더바) 등 현 프로젝트에서는 클래스 멤버 변수는 크게 정의가 없고, 함수에 들어가는 변수는 In___ , 함수에서 포인터 값으로 전달해줄 변수는 out____ 으로..
-
인프런 C++ 프로그래밍 입문 : Modern C++Programming/인프런 C++ 2023. 2. 20. 21:53
[인프런] C++ 프로그래밍 입문 을 보고 정리하는 글 1.auto 초기화하는 값을 기반으로 형태를 맞추어 변수의 타입을 자동으로 지정해준다 Type deduction : 컴파일러가 타입을 추론함 기본 auto 는 const, &를 무시한다 int& reference = a; const int cat = a; auto test1 = reference; // int&가 되어야하지만 int auto test2 = cat; //const int 가 되어야하지만 int auto& 로 정의하여 포인터임을 지정한다 auto 를 쓰는 상황 for 문에서 iterator 를 정의해야 하는 경우, 정의하지 않고 바로 사용한다 코드가 너무 길어지는 경우 2. 중괄호 초기화 중괄호를 사용하여 값을 초기화해주게 된다 변수의 ..
-
[Effective STL] 0. 서론Programming/Effective STL 2023. 2. 19. 22:46
수월할 것 같은 연산이 자원 누수를 일으키거나 불안정하게 동작한다 STL이 제공해주는 요소를 잘 결합해서 설계상의 특징을 최대한 끌어내야 한다 STL의 정의 이 책에서는 반복자를 가지고 동작하는 C++ 표준 라이브러리의 일부로 정의한다 string을 포함한 표준 컨테이너, iostream 라이브러리, 함수 객체, 알고리즘 등 (stack, queue, 우선순위 큐, bitset, valarray, C++ 배열 은 제외) 해쉬 포인터도 포함 . 원래의 STL 정의에는 없다. 참조 카운팅 Reference Counting 포인터의 컨테이너를 기반으로 한 설계에서 이야기한다 string 클래스도 내부적으로 참조 카운팅을 하게 되어있다 string, wstring 유니코드 문자열클래스 wstring stirng..
-
[Effective C++] 1. C++Programming/Effective C++ 2023. 2. 19. 22:45
1: C++ 언어들의 연합체 C++는 다중패러다임 프로그래밍 언어 라고 부른다 절차적 프로그래밍을 기본으로 하여 객체 지향, 함수식, 일반화 프로그래밍, 메타 프로그래밍을 포함한다 TMP : 템플릿 메타프로그래밍. C++의 일반화 프로그래밍 부분 STL : 템플릿 라이브러리 컨테이너, 반복자, 알고리즘, 함수 객체 C와의 차이점 C에서는 기본적으로 값 전달이 참조 전달보다 좋다. C++에서는 생성자, 소멸자가 생기고, 템플릿을 쓰다보면 해당 객체의 타입을 알 수 없기 때문에 const 객체 전달이 가장 좋다 그러나, STL은 값 전달이 좋다 (C 기반이기 때문에) 2: #define 보다 const, enum, inline 컴파일러를 더 가까이하자 #define 을 쓰면 선행 처리 과정에서 이미 상수로 ..
-
[Effective C++] 0. 서론Programming/Effective C++ 2023. 2. 19. 22:44
size_t 부호 없는 정수 타입을 typedef로 정의한 것 개수를 셀 때 쓰는 타입 (char* 기반 문자열의 크기, STL 컨테이너의 원소 개수 등) operator[ ] 에서도 받도록 한다 Explicit 암시적 변환이 불가능한 타입 명시적으로 변환해주어야 매개변수 등으로 쓸 수 있다 Undefined Behavior 실행 시간에 어떤 현상이 터질지 확실히 예측할 수 없는 동작 널포인터를 역참조하거나 char 배열 마지막에 널문자가 들어가거나 유효하지 않는 배열 index를 참조하면 안된다는 것