본문 바로가기

전체 글

(104)
[그래픽스] 충돌 검사 - 점과 점/선/평면과의 충돌 오늘의 TIL 목차 (23. 01. 10) 점과 점/선/평면과의 충돌점과 점 사이의 거리1. 2차원 상의 점과 점 사이의 거리피타고라스 정리를 이용하여 구한다. 2. 3차원 상의 점과 점 사이의 거리각각의 좌표값의 차를 제곱해서 모두 더해준 후 루트를 씌우면 점과 점 사이의 거리를 구할 수 있다. ※ 실제 코드에서는 제곱근(루트, sqrt)을 구하는 것이 비용이 높기 때문에 충돌 검사 시 거리 대신 거리의 제곱값을 사용하는 것이 보통이다. 두 중심 사이의 거리는 벡터를 이용해서 구할 수 있다.// || P-Q ||XMVector3Length(VectorP - VectorQ); 점과 선 사이의 거리점과 선 사이의 거리는 직선, 반직선, 선분으로 구분지을 수 있다.1. 점과 직선 상의 거리직선은 양쪽으로 끝..
[DirectX] 픽킹, 교차 판정 - 경계 구체와 반직선(광선) 목표픽킹 광선을 이용한 모델 픽킹 방법의 이해들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 뷰포트 변환아핀공간역행렬이차방정식과 근의 공식광선픽킹픽킹이란? 사용자가 마우스로 클릭한 화면상의 위치와 대응되는 3D 물체를 가려내는 기술  픽킹은 원하는 위치를 얻어낼 때도 사용된다.픽킹 광선은 뷰스페이스의 원점에서 시작하여 클릭된 스크린 포인트와 대응되는 투영창의 포인트를 통과한다.픽킹을 하기 위한 절차 4가지1. 마우스로 클릭한 스크린 포인트 s를 역변환하여 투영창에 대응되는 포인트 p를 얻는다.2. 뷰스페이스 상의 원점에서 출발하여 p를 통과하여 발사되는 광선을 계산한다.3. 픽킹 광선과 모델을 동일한 공간으로 변환한다.4. 픽킹 광선과 교차하는 물체를 알아낸다. 교차된 물체..
[그래픽스] 렌더링 파이프라인 (ft. WVP 변환 파이프라인) 오늘의 TIL 목차 (22. 12. 14) 렌더링 파이프라인 렌더링 파이프라인렌더링 파이프라인이란?3D 세계를 가상 카메라를 이용해 2D 이미지(우리가 보는 화면)를 만들어내는 역할을 담당 렌더링 파이프라인 특징렌더링 파이프라인은 행렬의 곱으로 변환이 이뤄진다.게임 오브젝트마다 각각 변환을 적용시킬 수 있다.렌더링 파이프라인을 끝마쳐야지만 출력이 되기 때문에, 우리가 변환을 해주지 않은 경우 자동으로 항등행렬이 곱해진다.렌더링 파이프라인은 게임 오브젝트 출력 순서, 변환(SetTransform) 선언 순서와 상관없이 디바이스 자체에서 보관하고 있다가 가장 마지막에 렌더링 파이프라인 순서대로 자동 정렬해서 각 오브젝트마다 변환을 실행변환을 적용하지 않을 경우 자동으로 항등행렬이 곱해지지만, 다른 곳에서 해..
[TIL 39장] TimeDelta, find_if문과 함수 객체, 뷰 스페이스 변환의 행렬 원리(월드행렬) 오늘의 TIL 목차 (22. 12. 06) TimeDelta find_if문과 함수 객체 뷰 스페이스 변환 행렬 원리 TimeDelta [ TimeDelta ] : 시간 평균(주기)로 각 컴퓨터 성능 별 나타나는 시간 주기를 말함. TimeDelta = 인터벌(간격) / cpu 연산속도(프리퀀시) 메인보드가 갖고 있는 고해상도 타이머의 누적값을 얻어오는 함수 QueryPerformanceCounter(&m_CurrentTime);// 1000 QueryPerformanceCounter(&m_OldTime);// 1020 QueryPerformanceCounter(&m_OriginTime);// 1030 고해상도 타이머의 주파수를 얻어오는 함수, 주파수는 cpu 초당 클럭수 주기를 말함 QueryPerfo..
[TIL 35장] 포물선 공식, 직선의 방정식 오늘의 TIL 목차 (22. 09. 29) 디그리 각도 라디안으로 만들기 윈도우 초기화 라디안 각도 [ 라디안 각도 ] : degree 각도 * 파이 / 180; 역함수는 0 ~ 180도만 반환함. 즉, 몬스터 추적를 추적해야할 때 몬스터가 플레이어 높이보다 위에 있따면 y축을 -로 이동해야하기 때문에 m_fSpeed에 -1을 곱해서 음수로 이동하게끔 함 기울기는 라디안 각도임 - tan( 높이 / 밑변 ) 일반 삼각함수는 무조건 각도 하나를 알아야되는거고 각도를 알고싶은 건 무조건 역함수를 사용해야하는거시다!!!!!!!!! 각도가 90도일 때, cos는 0, sin은 1. (삼각형을 그릴 수 없으니까 단위원 따라 생각하면 저렇게 된다고 한다 !!! ) => t는 time, g는 gravity(중력은 9..
[TIL 34장] Win32 API 원리 (feat. 윈도우 초기화) 오늘의 TIL 목차 (22. 09. 29) API 개념 윈도우 초기화 API 개념 [ API ] : Application Programming Interface, 인터페이스는 컴퓨터와 사람 간의 연결 고리 ( 키보드, 모니터 등 ) [ Handle, 핸들 ] : OS 보호 차원에서 응용프로그램이 바로 OS 자원의 주소값을 접근하는 것이 아니라 핸들값을 제공하는 것 [ WM ] : Window Message, 윈도우는 메세지 기반 [ DC ] : 출력에 관한 정보를 갖고 있는 데이터 구조체, GDI가 관리하며 어떤 포인트(점)인지 선의 색상, 굵기, 무늬 등 그리기와 관련된 정보를 가진다. => hdc는 도화지라고 생각하면 된다. 윈도우 초기화 [ wWinMain ] : 윈도우의 메인 함수 [ CALLBA..
[TIL 33장] R-value 레퍼런스( feat. move() ), 이동 생성자 오늘의 TIL 목차 (22. 09. 23) R-value 레퍼런스 이동 생성자 r-value 레퍼런스 [ r-value 레퍼런스 ] : 우항에만 위치할 수 있는, 사용되는 단일 식을 넘어 지속되지 않는 일시적인 값을 의미 [ L-value와 R-value ] // int iA, iB; iA = 10; // iA는 L-value, 10은 R-value => 10은 임시 객체에 있다가 라인을 벗어나면 소멸됨, 재사용 불가능 (R-value) iB = iA; // iB, iA는 L-value => iA와 iB는 언제든 재사용 가능, 왼쪽에 위치할 수 있음 (L-value) - [ R-value reference ] int& 는 L-value를 참조, int&&는 R-value를 참조 ( 임시 공간에 할당되어 ..
[TIL 32장] C++ 11 주요 함수 - 유니폼 초기화, auto, 범위 지정 for문, 람다식, try-catch문 오늘의 TIL 목차 (22. 09. 22) 유니폼 초기화 auto 범위 지정 for문 람다식 try-catch문 C++ 11 주요함수 [ 유니폼 초기화 ] : 초기화 방식의 일부, 객체를 생성하는 단계에서 () 대신 {}를 이용하여 값을 초기화할수 있다. [ 초기화 방법 ] 1. int iA = 10; // C 시절의 초기화, 비추 2. int iA(10); // C++ 시절의 초기화 3. int iA{10}; // C++ 11, 유니폼 초기화 ■ 기능 / 주의 구조체를 초기화할 때 주로 사용, 클래스도 유니폼 초기화 가능하나 잘 사용하지 않는다. 유니폼 초기화로 클래스의 멤버 값을 바꿔주고 싶으면 인자 값이 있는 생성자를 만들어줘야 한다. ■ 예시 struct tInfo { char* sName; in..