[해골책 , 용책 ... 다 있었지만 이걸 보고 제대로 공부하지는 못했다..] 학원에 다닐때 강의 내용을 따라가기만 했지 제대로 공부를 하지는 못했던것 같다.당시 느꼈던것은 이런 내용을 단시간만에 이해할 수 있는 사람은 어떤 사람일까? 였다. 한달, 두달만에 예제 따라하기만 급급했기에..문제가 있었다.(개인적인 공부 욕구를 충족시켜주지 못했다.) 아무튼 이제 시간을 조금 더 내서 수학과 3D에 대해서 기본적으로 하나씩 구현해보자.!!
프로그래밍 관련
[생성 패턴] 추상 팩토리 패턴 - Abstract Factory [ 이미지 출처 : http://www.c-jump.com ] 목적 상세화된 서브 클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하기 합니다. 활용 - 객체가 생성되거나 구성.표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할때 - 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한번 구성한 제품을 다른 것으로 대체할 수 있을 때 - 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에서도 지켜지도록 하고 싶을 때 - 제품에 대한 클래스 라이브러리를 제공하고 , 구현이 아닌 인터페이스를 노출하고 싶을때. 장점 1. 구체적인 클래스 분리 2. 재..
[책은 그냥 마구마구 사들였다..] 객체지향을 이해하려면 디자인 패턴을 공부하느것이 좋다! 라는 말을 들어서 인지..눈에 보이는대로 하나씩 사기 시작하니까 총 3권이다..게임 디자인 패턴의 경우 국내 출시전에 pdf 파일을 구매해서 인쇄소에서 제본을 떠버렸다..물론 이해하기는 어려웠지만..아무튼.. 이제 학원에 다니지 않는 상황이 되었기 때문에 연습용 게임 제작 틈틈히 패턴 공부를 해야겠다..(그래픽스도 해야하고..할께 많다..ㅠ) 책의 내용이 대부분 Java나 C로 되어 있어서 c# 까지는 어려워도 개념의 이해를 하고 넘어가야겠다!이제부터 시작!
Vector란? 3차원 공간에서 벡터는 크기(길이)와 방향을 가진 것으로 일종의 화살표가 있는 직선이라고 생각할 수 있다.벡터는 위치 개념이 없기 때문에 길이와 방향이 같으면 어디에 위치하든 같은 벡터라고 할 수 있다.만약, 벡터의 크기(길이)가 1이면 단위 벡터(unit vector)라고 말하고, 길이가 0인 벡터는 영 벡터(zero vector 혹은 null vector)라고 한다. 벡터는 3차원 공간으로도 이야기 할 수 있다. 엄밀히 말해서는 점과 벡터로 이루어진 아핀 공간(Affine Space)이라고 할 수 있다. 벡터의 크기 (길이) 벡터의 크기는 방향을 가진 선분의 길이이다. 벡터의 성분이 주여졌다고 할 때, 다음과 같은 식을 이용해 벡터의 크기를 대수학적으로 계산해낼 수 있다. || u |..
이번에는 비트맵에 알파 블랜딩(투명)을 하는법에 대해서 알아보겠습니다. AlphaBlend함수가 있지만 Gdi32.lib 파일을 포함시켜야만 하는데, 윈도우 2000 이상부터는 GdiAlphaBlend함수를 사용하여, 동일한 기능을 할 수 있습니다. (해당 기능의 헤더 파일은 WinGdi.h (include Windows.h)) GdiAlphaBlend : 투명 또는 반투명 픽셀 비트맵을 표시합니다. - 해당 함수의 기능은 AlphaBlend와 완전히 같습니다. BOOL GdiAlphaBlend( _In_ HDC hdcDest, _In_ int xoriginDest, _In_ int yoriginDest, _In_ int wDest, _In_ int hDest, _In_ HDC hdcSrc, _In_ i..
기존에 비트맵을 단순 출력하는것에서 추가적인 효과를 주는법에 대해서 알아보도록 하겠습니다. 기본적으로 WINAPI에서 비트맵을 출력할때는 사각형 모양으로 밖에 출력되지 않습니다. 물론 흰색 바탕에 흰색배경이 있는 이미지라면 상관 없겠지만 다른 색상일 경우 위와 같이 사각형의 테두리가 발생되기 마련입니다. 위에 깜찍한 무지가 있지만 이 무지의 주변에 보라색만 제거하고 싶을때 어떻게 해야할까요? TransparentBlt 함수가 있지만 Gdi32.lib 파일을 포함시켜야만 하는데, 윈도우 2000 이상부터는 GdiTransparentBlt 함수를 사용하여, 동일한 기능을 할 수 있습니다.(해당 기능의 헤더 파일은 WinGdi.h (include Windows.h)) GdiTransparentBlt : 특정 ..
그 동안 X,Y 좌표로 이루어진 2차원 평면 공간에 이미지나 텍스트들을 출력해 왔습니다. WIn API에서는 4가지의 좌표 공간을 제공합니다. 월드 공간(논리 좌표를 사용하는 큰 공간) -> 페이지 공간 (논리 좌표) -> 디바이스 공간 (물리 좌표) -> 물리 장치(프린터 등등) 페이지 공간과 디바이스 공간에 대해서는 이전 시간에 맵핑을 하였기 때문에 생략하도록 하고, 이번 시간에는 월드 공간에서 페이지 공간으로 맵핑을 하도록 하겠습니다. 월드 공간은 디폴트로 사용되어 지지 않으며, 그래픽 모드를 변경하여 사용합니다. 이전에 사용했던 페이지 공간에서 디바이스 공간으로의 맵핑 만 사용해도 원점의 이동으로 화면 이동을 쉽게 구현 할 수 있습니다. 다만, 월드 좌표를 변환하게 되면 페이지 공간 자체를 변경하..
이전 시간에는 윈도우 좌표체계에 대해서 공부해봤습니다. 이번 시간에는 화면에 표시되는 논리좌표(윈도우가 표시되는 좌표)와 물리좌표(화면에 보이는 영역)을 맵핑하는 방법에 대해서 알아보겠습니다. 먼저 사각형을 그리도록 하겠습니다. [결과] 예상했던것과 같이 나란히 사각형이 그려졌습니다. 단 , -100 , -100 , 0 , 0 의 그린 사각형의 경우 보이지 않습니다. 이제 우리는 이 부분에 대해서 설명할 수 있습니다. Rectangle함수를 통해 그리는 좌표는 논리 좌표(윈도우 좌표)이고, 화면상에 보이는 것은 물리 좌표(뷰 포트)의 영역이라는 것을 알 수 있습니다. 그럼 맵핑 함수를 통해 지금은 보이지 않는 사각형을 볼 수 있도록 해보겠습니다. 먼저 맵핑을 하는 함수에 대해서 알아보고 이후에 맵핑 모드..