나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

프로그래밍

  • 개념 3D 이해 4.뷰 변환

    2008.11.13 by ∫2tdt=t²+c

  • 개념 3D 이해 3.변환

    2008.11.13 by ∫2tdt=t²+c

  • 개념 3D 이해 2.위치

    2008.11.13 by ∫2tdt=t²+c

  • 개념 3D 이해 1.삼각형

    2008.11.13 by ∫2tdt=t²+c

  • 아트 코딩, 변태 코딩의 도화선

    2008.11.12 by ∫2tdt=t²+c

  • BCD와 일반적인 2진표현

    2008.07.10 by ∫2tdt=t²+c

  • 문자열을 정수로(DWORD보다 큰)

    2008.07.09 by ∫2tdt=t²+c

  • DWORD보다 큰 단위의 정수 더하기

    2008.07.09 by ∫2tdt=t²+c

개념 3D 이해 4.뷰 변환

원래는 전 글에서 변환 설명을 다 끝내려고 했는데 길어져서 나누어버렸다. 우리의 현재 목표는 3차원상의 물체를 카메라에서 보이는 대로 화면에 표현하는 것이다. 이것을 저번 편에서 배웠던 행렬 변환을 이용해서 만들어보자. 가장 먼저 할일! 입장바꿔 생각해보기(易地思之). 먼저 Direct3D상에서는 x축이 모니터에서 오른쪽으로 뻗어나가는 방향이고, y축이 모니터에서 위쪽으로 뻗어나가는 방향이고 z축이 모니터 안쪽으로 들어가는 방향이다. (Direct3D를 예로 들어 설명한 이유는 가장 많이쓰이기 때문이다. OpenGL이나 또 다른 3D API에서는 축을 다르게 잡는다.) 그리고 모니터의 정 중앙이 원점(0,0,0)이 된다. 그럼 카메라가 볼때 원점은 어디가 될까? 바로 자기 자신의 위치가 원점이 될 것이다..

프로그래밍/3D 2008. 11. 13. 14:21

개념 3D 이해 3.변환

3차원 그래픽을 위해서인지는 몰라도 선형대수학이라는 학문이 발전되어 있다. 고등학교 때 행렬을 배우면서 이걸 어디에다가 쓰지 어디에다가 쓰지 했지면, 행렬은 3차원 그래픽에 쓰이고 있었다! 위키백과: 선형대수학 선형대수학은 벡터와 행렬에 대해서 연구하는 학문인데, 간단하게 말해서 우리는 3차원 상의 변환을 표현하기 위해서 행렬 변환을 사용할 것이다. 여기서 너무 수학적인것에 대해 설명한다면 머리가 터질지 모르므로 간략히 설명하면서 넘어가겠다. 일단 저번에 표현해봤던 점을 다음과 같이 벡터로 표현해보자. (x y z 1) 마지막에 1이 왜 들어갔냐고 따지지말라. 1의 유용함이 곧 드러날것이다. 우리는 이 4차원 벡터에다가 4차 정사각행렬을 곱할것이다. 이 식 그림들은 DirectX Documentation..

프로그래밍/3D 2008. 11. 13. 13:20

개념 3D 이해 2.위치

3차원 상에서 물체를 표현하는 방법을 전에 설명했다. 그럼 이것을 실제로 나타내보자. (여기 나오는 코드들은 그냥 이해를 쉽게 하기 위한 코드이며 실제로 써먹을 일은 없다!) 먼저 점을 나타낼수 있는 구조체를 만들어본다. typedef struct _Dot { float x,y,z; }Dot; 3차원 상의 점이므로 점의 위치를 표현하는데에는 3개의 좌표가 필요하다. 그리고 위치를 표현하기에는 정수형 보다는 실수형 자료가 낫다. 정수형을 쓰면 나타내기가 불가능한 좌표가 너무 많기 때문. 그럼 이제 삼각형을 나타내는 구조체 typedef struct _Triangle { Dot dot[3]; }Triangle; 이제 삼각형의 배열로 3차원 물체를 나타낼수 있겠다. 그런데 3차원 물체를 화면에 어떻게 그려야할..

프로그래밍/3D 2008. 11. 13. 12:37

개념 3D 이해 1.삼각형

요즈음 대부분의 영상이나 게임에서 3차원 그래픽을 찾아볼 수 있다. 과거에는 컴퓨터사양이 딸려서 꿈꾸지도 못한일이지만, 최근 그래픽카드와 CPU의 발달로 3D그래픽은 흔하게 되어버린것이다. 3차원그래픽의 개념을 이해, 정리하기 위해 글을 쓴다는 목적을 여기서 밝힌다. 3D에 다가가는데의 첫번째 난관은 3D물체의 표현방법일것이다. 2D그래픽은 비트맵 방식으로 쉽게 표현하고 화면에 나타낼수 있는데 3차원에서는 비트맵 방식을 사용하기 곤란하기 때문이다. 만약 3차원에서 비트맵 방식을 사용한다고 하면 예를 들어 256x256x256크기의 비트맵을 사용하면 각 픽셀당 RGBA32로 4바이트, 4Bx256x256x256=64MiB. 3차원 물체 하나의 용량도 어마어마하지만, 확대 축소 회전 등의 변환에서 문제가 발..

프로그래밍/3D 2008. 11. 13. 12:21

아트 코딩, 변태 코딩의 도화선

디시인사이드 프갤의 디- 횽의 코드가 아트 코딩/변태 코딩의 시작이라고 할수 있다. int main() { int score; puts("점수를 입력하세요."); scanf("%d",&score); printf("자넨 %c일세.","FFFFFEDCBAA"[score/10]); } 위 코드는 학점을 계산해주는 코드인데, 점수는 0에서 100사이이다. 정말로 아름답지 않을수가 없는 코드이다. 코딩의 르네상스를 가져왔다고나 할까..

프로그래밍/테크닉 2008. 11. 12. 20:08

BCD와 일반적인 2진표현

BCD는 이진화십진코드(2진수 4비트를 묶어서 10진수 한자리를 나타내는 코드)의 약자. 따라서 BCD는 십진수로 표현하기가 쉽다. 하지만 일반적인 2진수는 10진수로 나타내는게 쉽지가 않다. 그래서 사용하는 알고리즘이 시프트 더하기 3 알고리즘, (double dabble)알고리즘이다. 이 알고리즘은 간단하게 설명하면 다음과 같다. 일반 2진수 코드를 왼쪽으로 1비트씩 시프트한다. 4비트씩 묶어서 5 이상이 되는 자리에는 3을 더해준다. 모든 비트가 다 왼쪽으로 시프트 될때까지 위 과정을 반복한다. log2=약 0.3010 이므로 십진수 한자리를 표현하려면 약 3.33비트가 필요하다. 예를 들어 이진수 11001100을 BCD코드로 변환해보자. 대략 BCD코드가 3자리 필요할거다. 0000 0000 0..

프로그래밍/테크닉 2008. 7. 10. 10:29

문자열을 정수로(DWORD보다 큰)

DWORD보다 큰 정수를 더하는 코드는 전에 정리해놓았지만, DWORD보다 큰 정수를 어떻게 입력받고, 출력하지?? 방법은 단 한 가지, 문자열로 받고,문자열로 내보낸다. 그러기 위해서 double dabble이라는 알고리즘을 사용한다. 쉬프트 더하기 3 알고리즘이라고 카더라 long CreateFiString(Fi& fi,const char* number) { long Sign=0; if(*number=='-')Sign=1,number++; else if(*number=='+')number++; DWORD len=(DWORD)strlen(number); DWORD sn=(10*len+2)/3; fi.Size=(sn+31)>>5; DWORD i=(len+7)>>3; fi.pData=new DWORD[fi..

프로그래밍/테크닉 2008. 7. 9. 00:31

DWORD보다 큰 단위의 정수 더하기

흔히 빅 인터거(Big Integer)라고 부르기도 하는 방법. 큰 수를 여러 작은 수로 쪼개는 것이 해결방법. inline DWORD _iladdss(DWORD* po,DWORD* pr,DWORD count) { if(count==0)return 0; DWORD carry=0; __asm{ push esi; clc; cld; mov esi,pr; mov ebx,[po]; mov ecx, count; //반복회수 count로 지정 iloop: lodsd; adc [ebx],eax; //*po값에 *pr을 더함 inc ebx; inc ebx; inc ebx; inc ebx; loop iloop; //반복실행 jnc icarry; mov carry,1; icarry: pop esi; }; return car..

프로그래밍/테크닉 2008. 7. 9. 00:05

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

악보 포니게임 정보조직론 kiwi 토픽 모델링 문헌정보통계 한국고대경제와사회 라틴어 pg어 텍스트 마이닝 자연언어처리 우리역사바로알기대회 python BigFloat NLP 리듬게임 php c++ 영어구조론 Direct3D

방문자

오늘
어제
전체

페이징

이전
1 ··· 25 26 27 28
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바