컴퓨터그래픽스 7

[컴퓨터그래픽스][OpenGL] 평면 Plane, Nomal 법선

출처 : Interactive Computer Graphics, 5th edition/Edward Angel 평면 Plane 아핀 공간에서 평면plane은 매개변수형 직선을 직접 확장함으로서 정의할 수 있다. 단순한 기하학으로부터, 직선 위에 있지 않은 세 점은 유일한 평면을 결정한다는 것을 알 수 있다. 아핀 공간에 세 점 P, Q, R이 있다고 가정하자. P와 Q를 잇는 선분은 다음 식을 만족하는 점들의 집합이다. S(α) = αP + (1 - α)Q, 0

[컴퓨터 그래픽스] Affine sum 아핀합, convexity 복록함

출처 : Interactive Computer Graphics, 5th edition/Edward Angel 아핀 합 Affine Sum 아핀 공간에서, 벡터+벡터, 벡터*스칼라, 벡터+점 이 정의되는 반면, 점+점, 점*스칼라 는 정의되지않는다. 그러나, 후자의 두 연산의 요소를 갖는 아핀 합Affine Sum이라 불리는 연산이 있다. 임의의 점 Q, 벡터 ν, 양의 스칼라 α에 대하여, P = Q + αν 는 [그림 4.11]에서 보듯이, Q에서 ν 방향의 직선 위에 모든 점들을 나타낸다. 그러나, 다음을 만족하는 점 R을 항상 찾을 수 있다. ν = R - Q 그러므로, P = Q + α(R-Q) = αR + (1 - α)Q 이 연산은 두 점의 합처럼 보이고, 다음과 같은 동등한 식을 유도한다. P..

[컴퓨터그래픽스][OpenGL] glLogicOp, Rubberband 고무줄 기법 XOR

출처: https://sangmin-kim.tistory.com/121 [Enjoy what you do!] 1. OpenGL glLogicOp란 ? glLogicOp 함수는 컬러 인덱스 렌더링을 위한 논리적 픽셀 연산을 한다. glLogicOp는 들어오는 색상 RGBA 색상과 프레임 버퍼의 해당 위치에서 RGBA 색상간에 적용되는 논리적 연산을 한다. 다음은 매개변수 옵션들 몇가지이다. GL_CLEAR 0 GL_SET 1 GL_COPY s GL_NOOP d GL_XOR s ^ d s represents the incoming color and d represents the color in the frame buffer. 여기서 s는 그리는 색이고, d는 프레임 버퍼 그러니까 배경색이다. 그리는 색과 배..

[컴퓨터그래픽스][OpenGl] viewport 뷰포트

출처: https://jenemia.tistory.com/9 [JENEMIA] void glViewport (GLint x, GLint y, GLsizei width, GLsizei height); 사물이 그려지는 영역 설정. (x,y)는 뷰포트의 왼쪽 아래 좌표이며 width, height는 폭과 높이이다. OpenGL에서는 윈도우의 좌표계도 좌상단이 아닌 좌하단이 원점이다. 디폴트 뷰포트 변환은 다음과 같다. glViewport(0,0,width,height); // 전체 창 사용 glViewport(0,0,width, height); // 좌하단 사용 glViewport(0,0,width/2, height/2); // 우하단 사용 glViewport(width/2,0,width/2, height/2..

[컴퓨터그래픽스][OpenGL] 상태머신 state machine

출처: https://wonjayk.tistory.com/31 [배고파서 까먹고 만든 블로그] 그래픽 출력에는 좌표뿐만 아니라 여러 요소가 개입됩니다. 색상 굵기 모양 조명 등등 그리기 함수들은 이 요소들을 참조하지만, 모든 인자로 이 수많은 요소들을 컨트롤 할 수 없습니다. 인자 목록이 한없이 길어질 것이며 잘 바뀌지도 않는 값을 매번 전달하는건 아주 비효율적 그래서 OpenGL은 이런 여러가지 정보를 상태머신에 저장합니다. 상태머신이란 상태를 저장하는 장소이며, 그리기에 영향을 미치는 여러 변수값들의 집합 모든 그리기 함수들은 전달받은 인자 외의 정보는 상태머신을 참조합니다. 상태변수들은 적당한 디폴트로 설정되어있는데, 이 값을 바꾸어주고싶을 때는 변경 함수로 값을 바꿔줍니다, 이 바뀐 값은 다시한번..

[컴퓨터그래픽스][OpenGL] OpenGL 기초-GLUT

출처: https://wonjayk.tistory.com/40 [배고파서 까먹고 만든 블로그] GLUT 문자기반의 콘솔에 화려한 그래픽을 수놓을 수 없기 때문에 윈도우가 필요하게 됩니다. 하지만! 윈도우를 사용하게 된다면, 플랫폼 독립성을 보장할 수 없습니다. 오로지 윈도우 운영체제에만 의존해서 작동하게 되기 마련이니까요, 그래서 나온것이 GLUT입니다. GLUT는 그래픽과는 거의 상관없는 기능이며 그래픽을 그리기 위한 껍데기를 만들어주는 것. void glutInit(int *argcp, char **argv); 이 함수는 GLUT라이브러리를 초기화하고 기반 플랫폼의 윈도우 시스템과 연결합니다. 인수는 main으로부터 전달받은 argc의 주소와 argv의 배열을 전달하는데, argc가 내부에서 변경될 ..

[컴퓨터그래픽스][OpenGL] 좌표계 설정 coordinate setting

출처 : https://m.blog.naver.com/pkk1113/220368225985 OpenGL에는 4개의 공간이 있다. 그중에 하나인 투상 공간 OpenGL의 3D 공간 속에서 어디부터 어디까지만 보이게 하느냐 영역을 정해서, 그 영역 밖으로 나가는 사물들은 잘려 보인다. 그래서 절단 좌표라고도 한다. glMatrixMode(GL_PROJECTION) 투상 좌표계(GL_PROJECTION)의 공간을 앞으로 계산하겠다는 뜻 투상을 표현하기 전에 선언 glMatrixMode(GL_MODELVIEW) 모델 좌표계와 시점 좌표계(GL_MODELVIEW) 의 공간을 앞으로 계산하겠다는 뜻 사물, 시점을 표현하기 전에 선언 glLoadIdentity() 좌표계를 초기화 glMatrixMode(GL_PROJ..