전체 글
[DirectX 11] 외곽선
개발 일자 : 2021년 12월 21일 외곽선은 다음과 같은 두 가지 방식으로 개발했습니다. 1. 라플라시안 필터를 이용한 외곽선 출력 2. 뎁스 차이를 이용한 외곽선 출력 1. 라플라시안 필터를 이용한 외곽선 출력 픽셀 쉐이더에서 라플라시안 필터에 픽셀들을 필터링시켜 외곽선을 검출했습니다. float mask[9] = { -1, -1, -1, -1, 8, -1, -1, -1, -1 }; // Laplacian Filter float coord[3] = { -1, 0, +1 }; float divider = 1; float4 PS_Outline_Laplacian(VertexOut_RenderTarget pin) : SV_Target { float4 Color = 0; float4 Ret = 0; floa..
[자료구조] 트리
트리의 개념 트리(tree)는 계층적인 자료를 표현하는데 적합한 자료구조이다. 트리의 구성 요소에 해당하는 A, B, C, D, E, F, G, H, I, J를 노드(Node)라 한다. 트리는 한 개이상의 노드로 이루어진 유한 집합이다. 이들 중 하나의 노드는 루트(root) 노드라 불리고 나머지 노드들은 서브 트리(subtree)라고 불린다. 계층적인 구조에서 가장 높은 곳에 있는 노드인 A가 루트가 된다. 위 노드에서 루트 노드는 A이고, 나머지 노드들은 {B, E, F}, {C, G}, {D, H, I}로 3개의 집합으로 나누어지는데 이들을 A의 서브트리라고 한다. 다시 서브 트리인 {B, E, F}의 루트는 B가 되고 나머지 노드들은 다시 2개의 서브 트리, 즉 {E}, {F}로 나누어진다. 트리..
[자료구조] 덱
덱(deque)은 double-ended queue의 줄임말로서 큐의 전단(front)과 후단(rear)에서 모두 삽입과 삭제가 가능한 큐를 의미한다. 그렇지만 여전히 중간에 삽입하거나 삭제하는 것은 허용하지 않는다. 덱의 추상자료형 객체 : n개의 element형의 요소들의 순서 있는 모임 연산 : create() ::= 덱을 생성한다. init(dq) ::= 덱을 초기화한다. is_empty(dq) ::= 덱이 공백 상태인지를 검사한다. is_full(dq) ::= 덱이 포화 상태인지를 검사한다. add_front(dq, e) ::= 덱의 앞에 요소를 추가한다. add_rear(dq, e) ::= 덱의 뒤에 요소를 추가한다. delete_front(dq) ::= 덱의 앞에 있는 요소를 반환한 다음 삭..
[자료구조] 큐
스택의경우, 나중에 들어온 데이터가 먼저 나가는 구조인데 반하여 큐(queue)는 먼저 들어온 데이터가 먼저 나가는 구조로 이러한 특성을 선입선출(FIFO: First-In First-Out)이라고 한다. 큐의 예로는 매표소에서 표를 사기 위해 늘어선 줄을 들 수 있겠다. 줄에 있는 사람들 중 가장 앞에 있는 사람(즉 가장 먼저 온 사람)이 가장 먼저 표를 사게 될 것이다. 나중에 온 사람들은 줄의 맨 뒤에 서야 할 것이다. 큐는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제되는 구조를 가지고 있다. 구조상으로 큐가 스택과 다른 점은 스택의 경우, 삽입과 삭제가 같은 쪽에서 일어나지만 큐에서는 삽입과 삭제가 다른 쪽에서 일어난다는 것이다. 위의 그림과 같이, 큐에서 삽입이 일어나는 곳을 후..
[골드4] 백준 17298 : 오큰수 - C/C++
문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,00..
[자료구조] 스택을 이용해 미로 탐색하기
위와 같은 6x6의 미로가 있을 때 도착 지점(4,5)까지 미로를 탐색하는 알고리즘은 다음과 같습니다. 현재 위치에서 이동이 가능한 칸들의 위치를 위, 아래, 왼쪽, 오른쪽의 순서로 스택에 저장합니다. 스택의 top 위치로 이동합니다. 위 과정을 반복합니다. 이동 가능한 위치를 모두 검사했거나, 현재의 위치가 도착 지점의 위치와 같다면 중단합니다. // 멤버 변수들 POINT m_MyPos;// 현재 내 위치 std::stack m_MovableStack;// 이동가능한 곳의 스택 bool m_IsEnd;// 도착 지점인지 enum class eMapAttr { S,// 시작 지점 O,// 이동 가능 X,// 이동 불가능 (벽) E,// 도착 지점 } // 스택에 원소가 있다면 (이동가능한 곳이 있다면)..
[C] bit 연산
https://hwanseok-dev.github.io/algorithm-theory/backend/bit/#n--1-b [이론] 쉽게 정리한 bit 연산 Consistency makes genius hwanseok-dev.github.io https://hwanseok-dev.github.io/algorithm-theory/backend/xor/ [이론] 쉽게 정리한 xor Consistency makes genius hwanseok-dev.github.io
[HLSL] Visual Studio에서 HLSL Syntax Highlighting 하는 방법 (다운로드 링크)
기본 Visual Studio 세팅에서는 HLSL 코드를 적을 때, 하이라이팅이나 오타, 에러를 잡아주지 않아서 불편함이 많았는데, 좋은 툴이 있어서 공유합니다. 위처럼 하이라이팅, 자동 완성, 오탈자, 에러등의 HLSL 코드 작성 시에 매우 유용한 것들이 포함되어 있습니다. 1. 다운 & 설치 방법 https://marketplace.visualstudio.com/items?itemName=TimGJones.HLSLToolsforVisualStudio HLSL Tools for Visual Studio - Visual Studio Marketplace Extension for Visual Studio - Enhanced support for editing HLSL in Visual Studio mark..