본문 바로가기

MFC

(8)
[MFC초보] Simple3D 프로그래밍 처음 배웠을 때 즈음에 만들었던 MFC 프로그램이다. 직각사면체를 그린다. 마우스를 움직이면 사면체가, 세 직각축 중 하나의 축을 중심으로 회전한다. 마우스를 클릭하면, 회전축이 바뀐다. 무언가 동적인 입체를 그려보고 싶었고, 한정된 지식과 아이디어로 만들 수 있었던 가장 간단한 프로그램이었다. 처음에는 리눅스에서 n-curse 라이브러리로 텍스트화면에 구현했었었고, mfc 를 처음 배울 때, 그걸 다시 구현해 보았던 것이다. 단순하기 그지없는 프로그램이지만, 혹시 궁금한 사람들을 위해 소스도 첨부해 놓는다.
[Project Euler 213] 30x30 격자 벼룩 http://projecteuler.net/index.php?section=problems&id=213 30x30 크기의 격자에 벼룩이 있다. 최초에 벼룩은 격자 하나당 하나씩 있고, 한 번 종이 울리면, 격자의 사방으로 튈 수 있다. 가장자리에 있는 벼룩은 바깥으로 나갈 수 없다. 종이 울릴 때마다 각 격자에 벼룩이 몇마리 있을지에 대한 확률분포를 색으로 표현하는 걸 만들어 봤다. 문제가 풀릴려면 부동소수점연산에 의한 오차가 문제가 될 것 같으나, 대략적인 것만 보기 위해서, 그런 건 우선 무시하고 만들어 봤다. 10번 종이 울린 후 확률 분포는 다음과 같다. 색이 흐리면 (하얀색에 가까우면) 확률이 낮은 것이다. vc6.0, mfc 로 짜봤으며, 소스는 여기 있다. 대충 짠거라 책임은 지지 않는다. ..
[MFC|CPP] 사구모양의 포텐셜 만들기 다음 신지식에 재미있어 보이는 게 있길래 답변달다가 만들어 본 것. 2차원 평면상에 주어진 점 P를 중심으로 둥그런 모양의 산을 만들어 보란다. 3차원 그래픽까지 구현할라면 죽을 것 같아서, 2차원 평면의 각 점에서의 함수값은 색으로 표현했다. 단색으로 표현할라니까 분해능이 256가지 뿐이다. 왼쪽 버튼을 클릭하면, 분지의 중앙점이 되는 P가 바뀌고, 오른쪽 버튼을 클릭하면 산이 바라보는 타겟 T가 바뀐다. 휠을 돌리면 분지의 반지름이 넓어진다. 소스코드다. VC6.0 에서 만들었다.
[CPP|MFC] 초간단 Blob 효과 효과가 매우 안 좋다. 기냥 무식하게 모든 픽셀에 대한 함수값을 계산해서 색깔을 지정하므로 속도도 엄청나게 느리다. 코드프로젝트의 기사를 보고 한번 해 봤다. 물론 내 것이 훨씬 성능이 좋지 않다. 각각의 공이 웅까웅까 움직이는 효과도 없고...
[CPP|MFC] 선분으로 단어 그려 돌리기 네덜란드 디자이너 크리스티나 포스탐(Christina Postam, 로마자는 여기서, 발음은 대충 읽은 것)의 미친시계에 대한 포스팅에서 플래시를 보고 대략 (한글로도) 할 수 있을 것 같아서, 기본 원리만 간단하게 MFC로 만들어 봤다.내가 만든 건 대화창 바닥에 마우스로 선분을 몇 개 그려서 글자든 뭐든 그림을 그리고, rotate 버튼을 누르면 각각의 선분이 시계바늘처럼 돌아가는 것. MFC라 예쁘진 않다. VC6.0용 소스. 소스의 라이센스는 블로그의 사용 라이센스와 동일함. 출처명시.
[CPP|MFC] 중력장의 인공위성 궤도 원주 근처에서 클릭하면 초기속도 지정 시작. launch 버튼은 아무짓도 안한다.
[C|MFC|수치해석] 라그랑지 다항식 라그랑지 다항식. 주어진 n 개의 점들을 지나는 n-1차 다항식을 구하는 것. 공식은 위키백과 영문판을 참고했다. #include #include typedef struct _data { double x; double y; } DATA; double l(DATA *dataList, int nData, int j, double x) { double prod = 1; for(int i=0; i
[C|MFC] 푸리에 시리즈 사각파 사각파 푸리에 시리즈 python 버전은 : https://daewonyoon.tistory.com/258 조금 지져분한 콘솔버전 /* By 숙제도둑 */ #include #define PI 3.1415927 /* * 1 * F (t) = ------- sin ( (2n+1) t ) * n 2n + 1 * */ double f(int n, double t) { return sin((2*n+1)*t)/(2*n+1); } /* * * k * X (t) = Sigma F (t) * k n = 1 n * */ double X(int k, double t) { int n; double sum = 0.0; for(n=0; n