CCD IK
CCD IK란?Cyclic Coordinate Descent Inverse Kinematics의 줄인말로 역운동학을 해결하는 알고리즘2D 또는 3D에서 여러 개의 관절(Joint)로 이뤄진 체인(arm, leg등)을 목표 위치로 움직이게 할때 사용기본 개념끝점(End Effector)이 목표(Target) 위치에 도달하도록 체인을 조정체인의 끝에서 시작해 각 관절을 하나씩 조정하여 반복각 관절은 자기 기준에서 회전해서 끝점이 목표에 더 가까워지도록 함이 과정을 목표에 도달하거나, 반복 횟수를 초과할 때까지 반복장단점장점구현이 간단하고 직관적실시간 응답이 가능유연한 관절 개수 지원단점최적의 결과를 보장하지 않음(Lical Minimum)관절수가 많아지면 수렴 속도가 느려질 수 있음예시게임 캐릭터의 팔다리 ..
2025.04.07
IOCP
IOCP란?Windows 운영체제에서 고성능 비동기 I/O 처리를 위한 커널 객체주로 네트워크 서버나 파일 I/O 처리에서 대량의 클라이언트를 효율적으로 처리하기 위해 사용됨예시: C10K 문제(동시 만개 이상 연결 처리)를 해결할 수 있는 중요 기술핵심 개념비동기 I/O 기반: I/O 요청을 보내고 완료될 때까지 기다리는게 아닌, 완료되면 알림을 받아 쳐리완료 포트(Completion Port): 비동기 작업이 완료되면, 해당 결과가 큐에 들어가고, 이 큐에서 결과 꺼내 처리스레드 풀(Thread Pool): IOCP는 여러개의 스레드가 동시에 큐에서 I/O 완료 결과를 가져와 처리할 수 있도록 스레드 풀을 지원동작 순서완료 포트 생성 -> CreateIoCompletionPort()를 호출해 IOCP..
2025.04.04
삼각수와 역함수
삼각함수삼각함수란?직각 삼각형의 변 길이 비율을 기반으로 한 함수기본적인 함수Sin(사인) : $sin \theta = \frac{높이(반대변)}{빗변}$Cos(코사인) : $cos \theta = \frac{밑변}{빗변}$ Tan(탄젠트) : $tan \theta = \frac{sin \theta}{cos \theta} = \frac{높이(반대편)}{밑변}$주요 활용회전 변환(2D 및 3D)어떤 오브젝트가 특정 각도로 회전할 때 새로운 좌표 계산에 활용됨2D 회전 변환 공식$x' = x cos \theta - y sin \theta$$y' = x sin \theta + y cos \theta$속도 및 이동 방향 계산탄젠트는 캐릭터가 특정한 각도로 이동할 때 사용예를 들어 이동 방향이 0일때 속도를 구할..
2025.04.02
Spline Interpolation
정의스플라인 보간이란 곡선을 부드럽게 연결하는 방법다향식 보간보다 안정적이고 부드러운 결과를 제공개요스플라인: 여러 개의 저차 다항식을 조합하여 부드러운 곡선을만드는 기법목적: 데이터 포인트를 적확히 지나면서 부드러운 곡선을 생성장점: 고차 다항식 보간보다 진동이 적고 안정적주요 유형선형 스플라인두 점을 직선으로 연결가장 간단하지만 매끄럽지 않음(연속 미분 불가)자연 스플라인3차원 다항식으로 구성하여 곡선이 부드럽게 연결끝점에서 2차 미분값이 0이되는 조건을 만족주기적 스플라인시작점과 끝점에서 같은 기울기와 곡률을 갖도록 설정보간 스플라인주어진 데이터 포인트를 정확히 지나도록 다항식을 결정적용 분야컴퓨터 그래픽스: 부드러운 곡선 및 애니메이션 경로 생성CAD : 자동차, 항공기 디자인 등 곡선 모델링수치..
2025.03.26
Easing
EasingEasing 이란?애니메이션이나 트렌지션에서 움직임을 자연스럽게 만들기 위해 속도를 조절하는 기법선형(Linear)일정한 속도로 움직임(ex: 등속 이동)가속/감속(Ease-in, Ease-Out, Ease-In-Out)Ease-In : 천천히 시작해 점점 빨라짐Ease-Out : 빠르게 시작해서 점점 느려짐Ease-In-Out : 천천히 시작하고 중간에 빨라졌다가 다시 느려짐기타 특수 이징 함수Bounce: 공이 바닥에 튕기는 것처럼 감속 후 튕겨 올라감Elastic: 고무줄처럼 튕기는 효과Back: 출발할 때 약간 뒤로 갔다가 앞으로 가는 효과사용처게임 애니메이션(캐릭터 이동, UI 효과)웹 개발(CSS 애니메이션, JavaScript)그래픽 엔진(Unreal Engine, Unity)Un..
2025.03.24
캐시 미스
캐시미스란?CPU나 GPU가 데이터를 캐시에서 찾지 못해 메인 메모리(RAM) 또는 저장장치에서 데이터를 가져와야하는 상황이는 성능 저하의 주 원인중 하나종류컴펄서리 미스(Compulsory Miss)콜드 미스(Cold Miss)라고도 불림처음 요청한 데이터가 캐시에 없는 경우 발생새로운 프로그램 실행 시 자주 발생캐패시티 미스(Capacity Miss)캐시 크기가 작아 필요한 데이터가 캐시에 남아 있을 수 없는 경우 발생데이터가 캐시에서 밀려나고 다시 필요할 때 미스가 발생컨플릭트 미스(Conflict Miss)특정 주소의 데이터가 캐시 내에서 같은 인덱스를 공유해야 하는 경우 발생직접 매핑(Direct-Mapped) 캐시에서 특히 문제가 될 수 있음캐시 교체 정책이 영향을 미침성능에 미치는 영향발생시..
2025.03.20
no image
삽입정렬
삽입 정렬삽입정렬이란?배열을 정렬할 때 현재 원소를 적절한 위치에 삽입하는 방식으로 동작시간 복잡도는 최악의 경우$O(N^2)$, 평균 $O(N)$동작배열의 두 번째 원소부터 시작해 현재 원소를 앞의 정렬된 부분과 비교현재 원소보다 큰 값들은 한칸씩 뒤로 밀어줌적절한 위치에 현재 원소 삽입마지막 원소까지 반복시간 복잡도최선의 경우(이미 정렬된 경우) : O(N)평균의 경우 : $O(N^2)$최악의 경우(역순으로 정렬된 경우) : $O(N^2)$특징추가적인 메모리 사용이 거의없음같은 값의 원소들이 원래 순서 유지거의 정렬된 데이터에 강함큰 데이터에는 비효율적임구현#include using namespace std;void insertionSort(int arr[5], int n) { for (int ..
2025.03.19
암시적 메서드
메서드메서드란?클래스 내부에 정의된 맴버 함수암시적 메서드기본 생성자(Defalult Constructor)객체가 생성될 때 호출되는 메서드사용자가 생성자를 정의하지 않으면 컴파일러가 자동으로 생성class Example {public: // 기본 생성자를 주석처리 했으므로 암시적으로 생성됨 //Example();};int main() { Example e; // 기본 생성자 호출} 소멸자(Destructor)객체가 소멸될 때 호출되는 메서드사용자가 정의하지 않으면 컴파일러가 자동으로 생성class Example {public: ~Example() { // 사용자가 정의하지 않으면 컴파일러가 자동 생성 std::cout  복사 생성자(Copy Constructor)같은 ..
2025.03.18
객체지향 캡슐화 VS 정보은
캡슐화(Encapsulation)캡슐화란?데이터와 그 데이터를 처리하는 메서드(함수)를 하나의 단위로 묶는 개념객체는 내부적으로 데이터를 가지고 있고, 그 데이터를 외부에서 직접 접근하느 것이 아닌 메서드를 통해 접근하도록 제한주 목적객체가 스스로 데이터를 관리하도록 하고, 객체의 외부에서는 객체 내부의 구현을 몰라도 되도록 만드는것이를 톤해 객체의 내부 구현을 변경하더라도 외부에는 영향을 미치지 않도록 할 수 있음Get, Set 함수class Car {private: int speed; // 내부 데이터public: // 데이터를 안전하게 수정할 수 있는 메서드 제공 void accelerate(int data) { //speed = data; speed +=..
2025.03.17