목록전체 글 (256)
cyphen156

체스판 다시 칠하기 M * N크기의 보드를 8 * 8 크기로 다시 구성하는데, 흰색과 검정색이 번갈아가며 색칠된다. 맨 처음 초기 색이 지정되어 보드가 제공된다고 했을 때 가장 적은 색 교체로 체스판을 다시 만들 수 있을지 알아내라제약사항8 주의 사항없다.CPP풀이체스판 다시 칠하기_1018.cpp/** * 백준 체스판 다시 칠하기_1018 * M * N크기의 보드를 8 * 8 크기로 다시 구성하는데, 흰색과 검정색이 번갈아가며 색칠된다. * 맨 처음 초기 색이 지정되어 보드가 제공된다고 했을 때 가장 적은 색 교체로 체스판을 다시 만들 수 있을지 알아내라 * * 제한사항 ***************************************** * 8 #include using namespace s..

이전 글에서 이어서 쓴다.※ 여기서 설명하는 예제 순서는 책에서의 예제보다 1개 인덱스가 높습니다.초점거리 왜곡과 깊이감앞서 경험했던 렌더링 예제에서는 하나의 물체만을 그리고 있었기 때문에 별다른 문제를 발견하지 못했다. 하지만 사실 이건 컴퓨터 그래픽스에서 현실감과 몰입감을 방해하는 요소가 고려되어있지 않다.바로 깊이감이다. 물체를 원근 투영 하여 그렸지만 사물이 화면에 그려지는 순서에 따라 먼저 그려진 그림이 덮어씌워져 나중에 그린 물체에 의해 가려져서 보인다. 예를 들자면 빨간 사각형을 그리고 그 위에 검은 원을 일부 겹쳐 그리는 듯하게 그린다는 것이다. 이러한 그리기 방식 때문에 물체가 가지고 있는 초점거리를 왜곡하는 현상이 발생한다.절두체 :: 3차원 NDC 이제 이차원 평면 NDC를 깊이를 추..

모니터는 항상 2차원 평면이기 때문에, 현실 세계처럼 입체감 있는 그림을 그리는 것은 매우 어렵습니다. 그래서 2차원 이미지를 3차원처럼 보이게 만드는 기법이 중요한데, 이를 원근 투영(Perspective Projection)이라고 부른다.이러한 원근감 표현은 르네상스 시대에도 이미 존재했으며, 한 점을 기준으로 직선 거리를 설정하고, 거리에 따라 같은 사물이라도 비율을 다르게 그리는 방식이 고안되었고, 현대에 이르러서는 이 '한 점'을 카메라와 같은 물체의 시점으로 일반화하여 세상을 바라보게 되었다. 이를 화각(Field of View, FOV)이라고 부릅니다.원근 투영은 기존의 직교 투영 방식에서 한 점으로 모이기 때문에 뷰 모델이 6면체의 형태에서 사각 뿔의 형태로 변화하게 된다. 모든 물체는 하..

백터의 외적내적과 다르게 외적의 경우 3차원 이상의 공간에서만 사용가능한데, 그 이유는 외적이 왼손법칙에서 설명했듯이 두 벡터에 대한 외적의 결과가 두 벡터 모두에 직교하는 새로운 벡터를 만들고, 이것이 회전 축을 결정하는 역할을 하기 때문이다.내적의 결과는 항상 스칼라였지만, 외적의 결과가 방향과 크기를 갖는 벡터이기 때문이라고 다시 설명할 수 있다.A · B 내적 연산 기호 = ∣ a ∣∣ b ∣ cosθ == axbx + ayby + azbz A X B 외적 연산 기호 = ∣ a ∣∣ b ∣ nsinθ == (aybz − azby, azbx − axbz, axby − aybx)위 수식에서 보면 알 수 있듯 내적은 같은 성분끼리 곱한 뒤 더하여 최종 결과를 만들어내고, 외..

수학은 비대면강의입니다제목과 전혀 상관없는 문제이차방정식의 해를 구하라제약사항ax + by = cdx + ey = f-1,000 주의 사항x와 y를 공백으로 구분해 출력한다.CPP풀이수학은 비대면강의입니다_19532.cpp/** * 백준 수학은 비대면강의입니다_19532 * 제목과 전혀 상관없는 문제 * 이차방정식의 해를 구하라 * 이차방정식의 근의 공식 * => ad - bc * ==> ae - bd * * 제한사항 ***************************************** * ax + by = c * * dx + ey = f * * -1,000 using namespace std;int m..

namespace _25._04._01_Divide_conquer{ internal class Program { static void Main(string[] args) { string str1 = "Hello"; string str2 = "Hello"; if (str1 == str2) { Console.WriteLine(); } string str3 = str1; } }}만약 다음과 같은 코드가 있다고 생각해보자str1과 str2의 주소는 서로 다르지만 값은 같은 것을 가리키고 있다. 그리고 이 문자열 "H..

분해합 분해합 : N과 N을 이루는 각 자리수의 합 (245 => 245 + 2 + 4 + 5 == 256)생성자 : M의 분해합이 N인 경우가장 작은 생성자를 구하라제약사항0 if No Result, returns 0 주의 사항없다.CPP풀이분해합_2231.cpp/** * 백준 분해합_2231 * 분해합 : N과 N을 이루는 각 자리수의 합 (245 => 245 + 2 + 4 + 5 == 256) * 생성자 : M의 분해합이 N인 경우 * 분해합이 주어졌을 때 가장 작은 생성자를 구하라 * * 제한사항 ***************************************** * 0 using namespace std;int main(void){ bool isConstructor = fals..

3차원 공간은 원근감이 존재하기 때문에 구현 방법이 복잡해지고, 예상밖의 상황이 많이 생긴다고 한다. 이것을 오일러의 각도법과 벡터의 외적으로 하나씩 해결해 나가면서 여러 수학적 지식과 게임 엔진 개발에 대한 지식들을 배울 수 있을 것 같다.좌표계 기준이 전에 한번 언급한적 있었던 왼손 좌표계와 오른손 좌표계에 대한 내용이다. 이 둘은 관점에 따라 3차원 공간을 설계하는 큰 차이를 만들어내는 기준들이 되는데 그 기준이 물체를 바라보는데 있어서 나를 기준으로 오는지, 또는 앞으로 가는지를 결정한다.대표적인 특징은 다음과 같다. 하지만 상대적인 기준일 뿐 절대적이지는 않다.왼손 좌표계 : 배경을 관찰하는데 적합하다오른손 좌표계 : 물체를 관찰하는데 더 익숙하다.밑의 그림은 대표적인 게임, 모델링 툴, 엔진과..