본문 바로가기

분류 전체보기

(236)
[렌더링파이프라인] 원형색상표 만들기 엄청 비효율적인 방법으로 만들게 된 것 같다... primitive topology(기본 토폴로지) 중 Triangle List를 이용하여 원이 만들어지고, 총 360개의 삼각형이 원을 이루고 있을 때, 각 원이 1도 가량의 각도를 가지고 있다. 그래서 1도 삼각형 하나하나 RGB값을 조금씩 변경하면서 for문 돌리면 될 것 같은데, 더 효율적인 방법을 찾지 못하였다.
화면 해상도 끝에 닿으면 꺾이는 화살 https://youtu.be/KwBT0i66F_E 화면 끝에 닿으면 화살이 꺾이면서 다른 방향으로 움직이게 했습니다. 그런데 카메라 이동이나, 해상도 크기 수정 시에 가끔식 화살이 벽에 박혀 안 움직이거나 아예 사라지는 등의 문제가 있었습니다. 문제 해결 조건 if(arrow.GetWorldPos().y >= app.GetHalfHeight())와 같은 것을 통해서 화면 끝에 닿을 시에 충돌판정 검사하는 부분은 맞았다. 충돌 시에 fireDir.y *= -1;을 통하여 날아가는 방향을 바꾸어 주었는데, 여기서 가끔씩 방향이 바뀌었지만 계속 충돌판정 조건에 걸려서 벽에 박힌 것처럼 이동하는 문제였다. 이것을 해결하기 위해 충돌 시에 방향을 바꿈과 더 이상 충돌이 안나도록 화살을 SetWorldPos()를..
포물선을 그리며 날아가는 화살쏘기 한동안 블로그 글 안쓰다가 오랜만에 왔습니당..ㅎㅎ;; 포물선을 그리면서 날아가는 투사체를 구현해봤습니다. 게이지 바에 따라서 날아가는 속도도 달라집니다. https://youtu.be/B_z4v6jrMcU
벡터 벡터(Vector) 벡터는 사물의 움직임을 프로그래밍하기 위한 가장 기본적인 구성 요소이다. C++ 프로그래밍에서 벡터(std::vector)는 유동적으로 크기 조절이 가능한 배열 자료 구조를 구현한 것을 말한다. 하지만 이것은 프로그래밍 면에서 바라본 벡터의 정의이고 물리적 관점, 수학적 관점에 따라서 정의가 달라진다. 보통 수학적 관점으로 크기와 방향을 모두 가지는 어떤 양을 벡터라 한다고 정의되어 있다. 위 이미지처럼 점 A에서 점 B로 향하는 벡터가 있다. 여기서 점 A를 시점, 점 B를 종점이라고 부른다. 원래는 벡터 AB의 기호는 밑에처럼 AB 위에 →가 있는 형태이지만, 지금부터 편의상 A→B로 나타내겠다. 벡터의 길이를 벡터의 크기라고 말하며, A→B의 크기를 나타내는 기호는 |A→B|와 ..
행렬의 종류 행렬(Matrix) 선형대수학에서 볼 수 있는 행렬은 1개 이상의 수나 식들을 행(Row)과 열(Column)에 맞춰서 직사각형의 배열로 나열한 것을 말한다. 가로줄을 행, 세로줄을 열이라고 부른다. 행렬 안의 원소의 위치에 따라서 i행 j열과 같은 위치를 나타낼 수 있다. 지금까지 C++ 프로그래밍을 배워오면서 행렬에 대해서 조금 다르게 사용했었지만, 수학에서는 지금 보는 방식이 맞다. 단위행렬(Unit Matrix) 또는 항등행렬(Identity Matrix)이라고도 부른다. 특징으로는 주대각선의 원소가 모두 1이며 나머지 원소들이 모두 0인 정사각형의 행렬을 말한다. 여기서 주대각선은 행(i) 번호와 열(j) 번호가 똑같은 성분을 말하는 것이다. 단위행렬은 크로네커 델타로 나타낼 수도 있다고 한다...
C++ 배우기 29(시프트 연산자, 비트 단위 연산자) 비트 단위 연산자(Bitwise operators) 비트 단위 연산자는 변수 내의 비트(bit)를 조작할 수 있다. 이를 사용하면 메모리를 절약할 수도 있다. 요즘에는 하드웨어의 발달로 유지보수가 쉬운 코딩을 하는 것이 더 좋은 방법이라고 한다. 때문에 비트 단위 연산자는 특정 상황을 제외하고는 잘 쓰이지는 않는다. 우선 비트 단위 연산자에는 6가지의 연산자가 존재한다. Operator Symbol Form Operation left shift > y all bits in x shifted right y bits bitwise NOT ~ ~x all bits in x flipped bitwise AND & x & y each bit in x AND each bit in y bitwise OR l x l ..
삼각비, 삼각함수 옛날에 배웠던 피타고라스의 정리(a² + b² = c²)과 비스무리한 느낌이다. 피타고라스의 정리는 직각삼각형 세 변의 길이 사이의 관계를 나타내고 있지만, 삼각비는 단순히 변의 길이가 아니라 변의 길이 사이의 비율을 나타낼 수 있다. 삼각비 삼각비는 직각삼각형에서 하나의 기준각을 잡고, 두 변의 길이를 이용하여 그 각에 대한 삼각비를 구하는 방법이다. 여기서 중요한 조건 중 하나는 반드시 직각삼각형이여야 하고, 하나의 기준각을 잡아야한다는 것이다. 만약 기준각만 같다면, 다른 변의 길이나 삼각형의 크기가 서로 다른 직각삼각형이라도 삼각비는 같다. 먼저 위 이미지를 보자. 직각삼각형의 직각의 대변(바로 맞은편에 있는 변)을 빗변(b)이라고 부른다. 우리가 기준으로 잡을 기준각(예를 들어 A)의 대변을 높..
C++ 배우기 28(WinAPI) WinAPI Windows API는 Microsoft Windows에서 사용하는 C언어 기반의 API(Application Programming Interface)를 말한다. 기본적으로는 C언어 기반이지만, C++에서도 사용이 가능하다. 윈도우에서 실행되는 모든 종류의 어플리케이션들은 내부적으로 전부 이 윈도우 API 함수를 호출하는 형태로 바뀐다. 이제 visual Studio로 WinAPI를 다루어 볼껀데, Win32 프로젝트를 생성하는 방법은 다음과 같다. 윈도우 프로시저(Window Procedure) WndProc를 말하며, 윈도우 클래스당 하나씩 배정되며 메시지에 대응하는 방식을 정의함으로써 윈도우의 행동 양식을 결정한다. 그래서 같은 윈도우 클래스로부터 만들어진 윈도우들은 모두 같은 윈도우 ..