WebGL 레슨 1 - 삼각형과 사각형

Size: px
Start display at page:

Download "WebGL 레슨 1 - 삼각형과 사각형"

Transcription

1 Created by Firejune at 2011/04/14 WebGL 레슨 1 - 삼각형과 사각형 첫 번째 WebGL 레슨에 오신것을 환영합니다. 이 학습은 게임 개발자를 위한 3D 그래픽 학습 수단으로 인기가 높은 NeHe OpenGL 두 번째 튜토리얼을 바탕으로 하고 있습니다. 고작 삼각형과 사각형이라니, 어찌보면 흥미가 떨어질만한 주제일지도 모르겠지만, 이 단원은 WebGL을 배우는 기초의 중요한 도입부입니다. 이 레슨을 이해할 수 있다면 나머지 레슨 역시 쉽게 배울 것입니다. 자, 여기에 삼각형과 사각형 그림이 있습니다.

2 WebGL을 지원하는 브라우저를 사용중이라면 여기를 클릭하여 실재 WebGL 버전을 확인할 수 있습니다. 지원하는 브라우저에 대한 정보는 레슨 0을 참고하세요. 지금부터 작동방법에 대하여 알아봅시다.

3 시작에 앞서... 이 레슨은 충분한 자바스크립트 프로그래밍 지식이 있지만, 3D 그래픽 구현 경험이 없는 사람들을 대상으로 하고 있습니다. 그리고 가능한 한 빨리 자신만의 3D를 구사하여 결과물을 만들수 있도록 하는 것에 목적을 둡니다. 레슨에 사용된 예제에서 실재 구현된 코드를 분석하여 어떤 일이 일어나는지 알아보고 그것을 이해하여 스스로 응용할 수 있도록 하는 것입니다. 저는 이 레슨을 스스로 학습하면서 작성했습니다. 그래서 분명히 효율적이지 못합니다. 효율적이지 못한 부분을 알아차렸다면 당신의 자산으로 삼아 이용하세요. 그리고 만약 뭔가 실수를 발견했다면 댓글을 통해 알려주세요. 즉시 수정 반영하도록 하겠습니다. 여기에 사용된 예제의 소스코드를 얻는 방법은 두가지가 있습니다. 실제 예제가 작동하는 곳에서 "소스 보기"를 선택하거나, GitHub를 사용할 수 있다면 저장소에서 동일한 예제를 다운로드할 수 있습니다.(앞으로 학습할 예제들도 포함되어 있습니다.) 추천하는 방법은 두 번째로, 저장소에서 모두 가져온 다음 즐겨쓰는 텍스트 편집기에서 열어두고 학습하는 것입니다. 이 단원은 OpenGL에 대한 지식이 있다해도 도입부 부터 두개의 쉐이더를 정의해 버리기 때문에 어리둥절 할 수도 있습니다. 쉐이더는 일반적으로 고도의 기술로 여겨지고 있지만, 좌절하지 마세요. 사실 생각보다 훨씬 쉽습니다. 다른 많은 프로그램과 마찬가지로 이 WebGL 예제는 저수준 함수를 정의하는 것으로부터 시작됩니다. 그리고 아래쪽에있는 코드에서 고수준

4 함수를 호출합니다. 그래서 이를 설명하기 위해 프로그램에 대한 설명은 아래에서 위로 진행합니다. 만약 지금 소스 코드를 보고 있다면 제일 아래로 건너뛰세요. HTML 마크업 다음과 같은 HTML코드가 보입니다. <body onload="webglstart();"> <a href=" Back to Lesson 1</a><br /> <canvas id="lesson01-canvas" style="border: none;" width="500" height="500"></canvas> <br/> <a href=" Back to Lesson 1</a><br /> </body> 이것은 페이지의 body에 속한 부분입니다. 다른 모든 것은 자바스크립트 속에 있습니다. (만약 "소스 보기"로 코드를 보고있다면, 사이트 접속 분석에 이용하는 추가 코드가 보입니다만 무시해도 됩니다.) 물론 <body>안에는 더욱 다양한 HTML태그를 추가하여 WebGL의 이미지를 볼 수 있습니다. 그러나 이 간단한 데모는 블로그로 이동하는 링크와 WebGL로 만든 3D 그래픽을 표시하는 <canvas>태그가 있을 뿐입니다. Canvas 요소는 HTML5에서 새롭게 추가되었습다. 이것은 웹페이지에

5 2D와 WebGL을 통한 3D를 자바스크립트를 사용하여 렌더링하는 새로운 수단입니다. 아래 코드는 <canvas>요소의 레이아웃을 조정하는 간단한 속성만을 사용합니다. webglstart라는 자바스크립트 함수에 선언되어 있으며 페이지가 로드될 때 한 번만 실행하도록 구성되었습니다. WebGL 초기화 - webglstart 이제 스크롤바를 조금 위로 올려 webglstart() 함수를 보도록 합니다. function webglstart() { var canvas = document.getelementbyid("lesson01-canvas"); initgl(canvas); initshaders(); initbuffers(); gl.clearcolor(0.0, 0.0, 0.0, 1.0); gl.enable(gl.depth_test); drawscene(); 이러한 함수 호출을 보통 "초기화 한다."라고 합니다. 이 함수는 WebGL 3D 렌더링의 대상이 되는 canvas 요소를 전달하고 앞서 언급한 쉐이더를 초기화 합니다. 또한 initbuffers 함수를 호출하여 특정 버퍼(Buffer)의 초기화도 실행합니다. 여기에서의 버퍼는 지금부터 그려야 할 삼각형과 사각형에 대한 정보를 유지하는 데 사용됩니다. 다음은 initgl에 의하여 만들어진 엔진인 gl객체에서 배경색상을 검게하는 메서드와 depth test를 위한 값을 기입하여 WebGL을 사용할 기본 설정을 구성합니다. 마지막에 호출한 drawscene 함수는 setinterval을 이용하여 매 0.015초 간격으로

6 화면을 갱신하게 됩니다. 이 함수는 버퍼를 사용하여 개체를 그립니다. WebGL이 어떻게 작동하는지 이해하기 위해서는 initgl과 initshaders 함수가 매우 중요한 역할을 하지만 이들 함수는 나중에 자세히 다루도록 하고 initbuffers와 drawscene을 먼저 살펴보도록 합니다. var trianglevertexpositionbuffer; var squarevertexpositionbuffer; 우선, 버퍼를 저장하기 위한 두개의 전역 변수를 정의합니다.(실제 WebGL을 구현할 때 마다 전역 변수를 사용해야 하는 것은 아닙니다. 이 레슨에서는 코드를 단순화하기 위해 사용했습니다.) 버퍼설정 - initbuffers function initbuffers() { trianglevertexpositionbuffer = gl.createbuffer(); 삼각형의 버텍스(Vertex, 꼭지점 혹은 정점) 좌표를 기록하기 위해 미리 만들어 두었던 전역 변수에 버퍼를 생성하여 할당합니다. 여기에서 꼭지점은 그리려고 하는 도형이 가상 공간에서 위치하게 될 좌표정보입니다. 삼각형은 3개의 꼭지점을 갖는 것입니다. 버퍼는 사실 그래픽 카드의 메모리입니다. 꼭지점 좌표들을 초기화하는 동안 그래픽 카드는 버퍼에 담긴 정보로 다시 그려내기 때문에 프로그램을 매우 효율적으로 작성할 수 있습니다. 물론 이번 레슨에는 단 3개의 버텍스만을 보내고 있기 때문에 그래픽 카드로 전송하는 비용은 거의 들지 않습니다만,

7 거대한 모델을 취급하게 되는 상황에서 이 방법은 엄청난 장점이 있습니다. gl.bindbuffer(gl.array_buffer, trianglevertexpositionbuffer); 이 라인은 WebGL에게 행동중인 버퍼에 대한 작업은 모두 인수로 지정된 버퍼에 의해 실행하도록 알려주는 것입니다. 이 작업에서 대상의 버퍼를 지정하는 것이 아니라, 미리 "current array buffer"를 지정하고 거기에 대한 작업을 수행한다는 개념은 항상 따라다닙니다. 이상하지요? 이렇게 하는 것은 성능상의 이유가 숨어있습니다. var vertices = [ 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0 ]; 위 코드는 자바스크립트 배열로 버텍스 좌표를 정의한 것입니다. 이 좌표를 자세히 보면 중심이 (0,0,0)인 이등변 삼각형인 것을 유추할 수 있습니다. gl.bufferdata(gl.array_buffer, new Float32Array(vertices), gl.static_draw); 이번에는 앞서 작성한 자바스크립트 배열을 바탕으로 Float32Array 객체를 만들고 "Current Buffer" 값을 설정하여 WebGL에게 알려줍니다. 물론 "Current Buffer"는 trianglevertexpositionbuffer입니다. Float32Array 대해서는 향후 레슨에서 다루도록 하겠습니다. 일단 지금 알아 두어야 할 것은, 이 방법으로 자바스크립트 배열을 WebGL에서

8 사용할 수 있는 버퍼의 형태인 Float32Array로 변경하여 넘겨줄 수 있다는 것입니다. trianglevertexpositionbuffer.itemsize = 3; trianglevertexpositionbuffer.numitems = 3; 버퍼의 마지막 작업은 두개의 새로운 속성을 추가하는 것입니다. 이것은 WebGL에 내장된 기능을 수행하지는 않습니다만 나중에 아주 유용하게 사용됩니다. 자바스크립트의 좋은 점은(나쁜 점이라고 하기도 하지만) 각 객체별 속성을 설정하기 위하여, 명시적으로 선언하는 것을 필요로하지 않다는 것입니다. 원래 버퍼객체는 itemsize와 numitems속성을 가지고 있지 않지만, 이제는 위와 같은 두 속성들을 가지게 되었습니다. 이 버퍼 속성으로 9개의 값으로 부터 분리된 3개의 버텍스 좌표정보(numItems)가 있고 각각은 3개의 숫자(itemSize)값으로 구성되었다는 것을 나타낼 수 있습니다. 삼각형을 위한 버퍼의 설치가 끝났으니, 다음은 사각형입니다. squarevertexpositionbuffer = gl.createbuffer(); gl.bindbuffer(gl.array_buffer, squarevertexpositionbuffer); vertices = [ 1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0 ]; gl.bufferdata(gl.array_buffer, new Float32Array(vertices), gl.static_draw); squarevertexpositionbuffer.itemsize = 3; squarevertexpositionbuffer.numitems = 4;

9 이 모든 것들은 분명해야 합니다. 사각형은 4개의 버텍스를 가지므로 삼각형 보다 큰 numitems값을 가지고 있습니다. 좋아요, 이것으로 두개의 도형이 가진 버텍스 정보를 그래픽 카드에 보낼 수있게 되었습니다. 지금부터 만들어진 버퍼를 이용하여 실제로 이 도형들을 그리기 위한 함수인 drawscene를 차근차근 살펴보도록 하겠습니다. 장면 그리기 - drawscene function drawscene() { gl.viewport(0, 0, gl.viewportwidth, gl.viewportheight); 첫 번째 단계는 viewport 함수를 사용하여 WebGL에 canvas의 크기를 알려주는 것입니다. 왜 이 작업이 중요 한지에 대해서는 한참 이후의 단원에서 다루게 됩니다. 지금 최소한 기억해야 할 것은 실재로 도형을 그리기 전에 canvas의 크기를 정하는 함수를 호출하는 것입니다. 다음 코드는 다음 장면이 그려질 것을 대비하여 canvas의 내용을 지우는 것입니다. gl.clear(gl.color_buffer_bit gl.depth_buffer_bit);... 그리고

10 mat4.perspective(45, gl.viewportwidth / gl.viewportheight, 0.1, 100.0); 여기에 장면을 어떻게 보일지에 대한 설정을 위해 퍼스펙티브(perspective, "원근법")를 설정합니다. 기본적으로 WebGL은 가까운 것과 먼 것을 같은 크기로 그립니다.(3D 용어, orthographic projection - "직각 투영"이라고 합니다.) 그래서 먼 것이 작게 보이도록하는 WebGL의 퍼스펙티브에 대한 설정이 약간 필요합니다. 여기서는 장면(수직) 시야각으로 45도, canvas의 너비와 높이 비율 시점에 더 가까이 가면 숨기는 거리로 0.1, 더 이상 멀어지면 숨기라는 거리로 100을 설정합니다. 위에서 볼 수 있듯이, perspective 함수는 mat4라는 함수 모듈을 이용하여 호출합니다. 이 함수 모듈은 매우 유용하지만 WebGL에 기본으로 포함되어 있지 않기 때문에 유틸리티 함수를 이용하여 정의하고 있습니다. 이 함수의 작동에 대한 자세한 설명은 나중에 다루겠지만, 세세한 것을 몰라도 손쉽게 사용할 수 있습니다. 퍼스펙티브 설정이 끝났으니 이제 출력하는 코드를 만들 수 있습니다. mat4.identity(mvmatrix); 첫 번째 단계는 3D 장면의 중심으로 이동하는 것입니다. OpenGL은 장면을 그릴 때 대상 물체마다 현재(Current)의 위치와 회전값을 전달합니다. 예를 들어, "20 만큼 전진하고 32도 만큼 회전하여 로봇을 그려"라는 식으로 말이죠. 실제로 복잡한 부분은 "요만큼 움직였고 이만큼 회전하여

11 그렸다"라는 지침이 있습니다. 이것은 "로봇을 그려라"라는 코드 한개의 함수로 캡슐화 할 수 있으므로 매우 편리합니다. 그리고 함수 호출 전에 이동 및 회전값을 변경함으로써 마음대로 로봇을 이동시킬 수 있습니다. 현재 위치와 회전은 매트릭스(Matrix, 행렬)에 유지되고 있습니다. 당신이 과거 학교에서 배운대로 매트릭스 이동(어디에서 어디로 이동하는지), 회전 혹은 다른 기하학적인 변형을 나타낼 수 있습니다. 더 자세한 내용으로 접근할 수 없지만, 4x4 행렬(3x3가 아닌) 한개로 3D 공간 사이의 어떤 변형을 나타낼 수 있습니다. 처음에는 identity matrix(단위 행렬)부터 시작합니다 - identity matrix는 아무런 변화가 없는 행렬입니다. 여기에 첫 번째 전이를 나타내는 매트릭스를 겁니다. 그리고 두 번째 변형을 나타내는 매트릭스를 곱하면 됩니다. 합성된 매트릭스 한개로 전체의 변형을 나타냅니다. 이 현재 이동과 회전을 나타내는데 사용되는 매트릭스를 model-view matrix라고 합니다. 아마도 이미 깨닫고 있다고 생각 합니다만, mat4.identity 함수는 앞으로 model-view matrix에 이동과 회전을 곱할 준비를 위해 identity matrix를 설정합니다. 즉, 3D로 표현하기 위해 움직일 수 있는 위치에서 원점으로 돌아 왔다고 말할 수 있습니다. 주의 깊은 어떤 독자는 매트릭스 이야기의 시작 부분에 "WebGL"가 아니라 "OpenGL"이라고 알려주었습니다. 이것은 mat4.perspective 함수처럼 매트릭스 처리를 위한 WebGL 내장 함수가 아니기 때문입니다. 대신, 스스로 구현 하거나, 이미 존재하는 서드-파티 매트릭스 라이브러리를 사용해야 합니다. - Brandon Jones씨의 glmatrix와 같은 - 유틸리티 함수의 기능에 대한 자세한 내용은 나중에 설명 하겠지만, 다행히도 자세한 내용을 잘 몰라도 사용하는데에 지장이 없다는 것입니다.

12 자, 이제 canvas 왼쪽 삼각형을 그리는 부분의 코드를 살펴봅시다. mat4.translate(mvmatrix, [-1.5, 0.0, -7.0]); mat4.identity 함수에 의해 3D 공간의 중심으로 이동했기 때문에, 좌측 1.5(X 축을 따라 마이너스 방향) 안쪽에는 7(보고있는 사람으로부터 멀어질 Z축을 따라 마이너스 방향) (mat4.translate 예상 했을지도 모르지만, 이것은 지정한 매개 변수에 따라 이동을 위한 매트릭스를 model-view matrix에 거는 낮은 수준의 이동을 위한 기능입니다.) 다음 단계에서는 실제로 렌더링을 시작합니다. gl.bindbuffer(gl.array_buffer, trianglevertexpositionbuffer); gl.vertexattribpointer(shaderprogram.vertexpositionattribute, trianglevertexpositionbuffer.itemsize, gl.float, false, 0, 0); 앞서 선언한 버퍼들 중 하나를 사용하기 위해 gl.bindbuffer를 호출해서 current buffer를 할당하는 코드를 호출합니다. 여기에 trianglevertexpositionbuffer을 지정하여 WebGL에게 버텍스 좌표로 사용하는 값을 전달합니다. 나중에 어떻게 작동하는지 조금 더 자세히 설명 하겠지만 지금은 버퍼에 있는 각 요소가 3개의 숫자로 이루어진 것을 미리 담아 두었던 itemsize 속성을 사용하여 넘겨주고 있다는 사실을 발견할 수 있습니다. 다음은

13 setmatrixuniforms(); 이것은 WebGL에 현재의 model-view matrix(또한 projection matrix도 있지만 나중에 알아봅니다)를 사용하도록 지시해야 합니다. 그리고 이 함수는 WebGL 내장 함수로 존재하지 않기 때문에 직접 준비해야 합니다. 이 mvmatrix(model-vew matrix) 변수를 변경하여 여러 곳으로 움직이는 것이 가능합니다. 그러나 이것은 전부 자바스크립트에 의해서만 이루어지기 때문에 setmatrixuniforms을 호출하여 매트릭스를 그래픽 카드로 넘겨주는 일을 하게됩니다. 이것이 완료 되면, WebGL은 버텍스의 위치를 가진 숫자 배열과 매트릭스를 알아차리게 되고, 다음과정에서 이 값들을 어떻게 사용하는지 알려줍니다. gl.drawarrays(gl.triangles, 0, trianglevertexpositionbuffer.numitems); 이 코드를 다른 말로한다면 "앞서 전달된 버텍스 배열로 삼각형을 그리세요. 버텍스는 배열의 0번 요소, 그리고 numitems에 위치한 요소로 사용하세요" 여기까지 끝나면 WebGL은 삼각형을 그릴 것입니다. 다음은 사각형을 그려봅시다. mat4.translate([3.0, 0.0, 0.0])

14 model-view matrix를 오른쪽으로 3만큼 이동한 곳에서 시작합니다. 기억하세요. 지금은 이미 좌측 1.5, 스크린에서 7.0 안쪽에 위치하기 때문에 이 결과 오른쪽 1.5, 뒤쪽이 7만큼 떨어진 위치에 있습니다. 다음은 gl.bindbuffer(gl.array_buffer, squarevertexpositionbuffer); gl.vertexattribpointer(shaderprogram.vertexpositionattribute, squarevertexpositionbuffer.itemsize, gl.float, false, 0, 0); WebGL에게 사각형의 버텍스 버퍼를 알려줍니다. setmatrixuniforms(); model-view matrix와 projection matrix를 다시 보냅니다.(마지막에서 mvtranslate 결과가 반영되도록) 이제 드디어 마지막 과정입니다. gl.drawarrays(gl.triangle_strip, 0, squarevertexpositionbuffer.numitems); 그리기를 실행하세요. 여기서 triangle strip이 무엇인지 궁금하시죠? 그래요, 이것은 삼각형의 연속들입니다. 처음 3개의 버텍스를 지정하여 삼각형을 그리고 다음 마지막으로 이용한 2개의 버텍스에 새로운 1개의 버텍스를 추가하고 다음의 삼각형을 그리고 또 하나를 추가하는 일을 계속합니다. 이것은 사각형을 지정하는 빠르고 간편한 길이지만 그리 좋은 방식은 아닙니다만, 더 복잡한 형상을 여러 삼각형으로 표현하는 매우

15 편리한 방법이기도 합니다. 어쨌든 여기까지 끝나면 drawscene 함수는 끝입니다. 실험 - Go crazy! 만약 당신이 여기까지 도달했다면 이제 직접 실험할 준비가 확실히 갖추어진 것입니다. GitHub 또는 "소스 보기"를 통해 얻어낸 파일을 로컬에 복사하세요. 만약 후자의 방법을 선택한다면 index.html과 glmatrix min.js가 필요합니다. 직접 브라우저에서 실행하여 제대로 작동하는지 확인하세요. 그리고 어떤 버텍스의 좌표를 변경해 보세요. 지금 장면은 완전히 평평하지만 얻을 사각형의 Z값을 2 또는 3으로 변경해 보세요. 위치가 뒤바뀌기 때문에 커지기도합니다. 한개 또는 두개의 버텍스를 변경하여 외관에 발생하는 왜곡을 살펴보세요. Go crazy, and don t mind me. I ll wait.... 자~ 다시 돌아오셨나요? 이제부터는 지금까지 가지고 놀았던 프로그램을 가능하게 지원했던 함수들을 살펴보도록 합니다. 전에 말했듯이, 만약 세부 사항을 모르고 initbuffers와 같은 함수를 그냥 복사해서 쓰는 것에 만족한다면 어쩌면 자세한 부분을 이해하지 않아도 당신은 재미있는 WebGL 페이지를 만들 수 있을지 모릅니다.(비록 흑백이라도 - 색상은 다음 레슨) 하지만 자세한 내용들에는 이해하기 어려운 것이 없어요. 어떻게

16 작동하는지에 대하여 이해하는 것은 분명히 더 나은 WebGL 프로그램을 개발할 수 있게 되는 것임을 명심하세요. 초기화 함수 - initgl 저와 계속 함께 하시겠어요? 감사합니다. 이제, 가장 지루한 함수를 먼저 끝내 버립시다. 처음에는 webglstart에서 호출되는 initgl 함수입니다. 이 코드는 웹페이지 상단에 있습니다. var gl; function initgl(canvas) { try { gl = canvas.getcontext("experimental-webgl"); gl.viewportwidth = canvas.width; gl.viewportheight = canvas.height; catch(e) { if (!gl) { alert("could not initialise WebGL, sorry :-("); 이것은 아주 간단합니다. 당신도 눈치챘을지 모르지만, initbuffers와 drawscene으로 불리는 함수는 자주 gl이라는 개체를 참조했었습니다. 이것은 WebGL의 중심이되는 무언가의 단순한 참조입니다. 이 함수는 그 무언가를 가져옵니다. 그 무언가는 WebGL 컨텍스트라는 것으로, standard context name을 사용하여 canvas로 부터 해당 컨텍스트를 얻을 수 있습니다. 컨텍스트가 생기면 자바스크립트의 객체에 어떤 property를 추가할 수 있는 멋진 기능을 이용하여 canvas 너비와 높이를

17 저장 해 둡니다. 이 값은 drawscene 함수의 시작 부분 뷰포트와 퍼스펙티브를 설정하는 데 사용할 수 있습니다. 예 그렇습니다. gl은 canvas요소를 통하여 WebGL을 사용하기 위한 컨텍스트입니다. 지원 함수 - mat4.create initgl()을 호출한 후 webglstart 함수는 initshaders()를 호출합니다. 물론 이 함수는 쉐이더를 초기화 합니다. 그 코드는 나중에 보기로 하고, 먼저 model-view matrix를 취급하는 유틸리티 함수들을 살펴봅시다. 아래가 바로 그 코드입니다. var mvmatrix = mat4.create(); var pmatrix = mat4.create(); model-view matrix를 유지하기 위한 mvmatrix라는 변수를 정의합니다. mat4.create에 의해 만들어진 이 매트릭스에는 모두 0으로 비어있는 행렬입니다. 당신은 기억할 것입니다. drawscene 함수를 분석하면서 glmatrix에 포함된 mat4.perspective 함수를 이용하여 변수를 할당하여 시점을 설정한 일을 말예요. mat4.perspective 함수는 WebGL 내장 함수가 없기 때문에 사용했었죠. model-view matrix가 물체의 이동 및 회전을 캡슐화 할 수 있는 것과 마찬가지로 멀리 갔다거나, 물체가 거리에 비례하여 가까이 있을 때 보다 작아짐을 나타내기에 아주 적합한 매트릭스입니다. 그리고 mat4.perspective는 당신이 짐작대로 projection matrix를 수행합니다. 인수로 지정된 투시 법을 적용하는 데 필요한 특수 매트릭스를 반환하는 함수입니다.

18 그렇습니다. 이제 앞에서 설명한 model-view matrix와 projection matrix를 자바스크립트에서 WebGL에 보내기 위해 setmatrixuniforms 함수에서 파생된 모든것을 보고 왔습니다. 그 무서운 쉐이더에 관한 것도 말이죠. 그들은 내부적으로 관련되어 있습니다. 그래서 살짝 그들의 배경을 살펴보도록 하겠습니다. 쉐이더(Shader)란 무엇인가, 생각해 보신적 있나요? 음, 3D 그래픽 역사의 어느 시점에서 그들은 이렇게 생각하고 있었을 것입니다. - 화면에 쓴 부분에 어떤 그늘을 클릭하거나, 무슨 색깔인지 여부를 시스템에 전달하는 코드 질량. 그러나 시간이 흘러 지속적으로 기능이 향상되어 지금은 그리기 전에 하고 싶은 것은 무엇이든 가능한 코드 덩어리 정도로 인식되는 것 같습니다. 그리고 이것은 사실 매우 유용합니다. (a)그래픽 카드에서 작동하기 때문에 매우 빠르게 동작 가능. (b)그들이 할 수 있는 변환 프로세스는 이러한 간단한 예제에서 정말 유용하게 다룰 수 있음. 이러한 간단한 WebGL 예제(적어도 OpenGL 튜토리얼의 "intermediate"입니다)에도 쉐이더를 도입하는 이유는 WebGL의 구조를 이용하기 위해서입니다. 다행히 쉐이더는 그래픽 카드에서 작동하기 때문에 우리의 model-view matrix와 projection matrix에 정의되어 있는 모든 지점과 버텍스를 상대적으로 느린 자바스크립트로 처리하지 않아도 장면을 그릴수 있기 때문입니다. 이것은 믿을 수 없을 정도로 편리하며, 이로인한 추가적인 오버헤드가 발생하더라도 그에 상응하는 가치를 얻을 수 있습니다. 초기화 함수 - initshaders

19 다시 초기화 부분입니다. webglstart 함수는 initshaders 함수를 읽고 있었어요. 한 라인씩 살펴보도록 합시다. var shaderprogram; function initshaders() { var fragmentshader = getshader(gl, "shader-fs"); var vertexshader = getshader(gl, "shader-vs"); shaderprogram = gl.createprogram(); gl.attachshader(shaderprogram, vertexshader); gl.attachshader(shaderprogram, fragmentshader); gl.linkprogram(shaderprogram); if (!gl.getprogramparameter(shaderprogram, gl.link_status)) { alert("could not initialise shaders"); gl.useprogram(shaderprogram); 위와 같이 getshader 함수를 사용하여 "fragment shader"와 "vertex shader" 두 가지를 검색하여 WebGL의 "program"이라는 녀석이 다 붙어 있습니다. Program은 WebGL 시스템 옆에 배치되는 코드의 일부입니다. 이것은 그래픽 카드에서 작동하는 무언가를 지정하는 방법을 간파할 수 있습니다. 기대 했을지도 모르지만 program은 여러 쉐이더와 연결됩니다. 각 쉐이더는 program중인 코드 조각을 알 수 있습니다. 각각의 program은 한개의 fragment shader와 한개의 vertex shader를 유지할 수 있습니다. 그것은 조금 나중에 봅시다. shaderprogram.vertexpositionattribute = gl.getattriblocation(shaderprogram, "avertexposition"); gl.enablevertexattribarray(shaderprogram.vertexpositionattribute);

20 program이 설치되고 shader가 연결되면 "attribute"에 대한 참조를 검색합니다. 그것은 program의 vertexpositionattribute라는 새로운 필드에 저장됩니다. 다시 말하지만 자바스크립트의 어떠한 객체든지 다양한 새로운 필드를 추가할 수 있다는 특징이 있습니다. 이를 이용하여 program에 기본적으로 존재하지 않는 vertexpositionattribute라는 필드를 추가합니다. 필요한 정보를 모아 두는 것이 편리하기 때문에 "attribute"를 program에 해당 할당해 버립니다. 그런데, vertexposionattribute은 무엇을 위해 있는 것일까요? 기억 할지 모르지만, drawscene 함수에서 사용되었습니다. 만약 삼각형의 버텍스 좌표를 적절한 버퍼에서 설정하는 코드로 돌아오면, 버퍼와 애트리뷰트를 연계하고 있는 것을 볼 수 있을 것입니다. 분명히 나중에 그 의미를 알 수 있습니다. 지금은 gl.enablevertexattribarray 함수를 사용하여 WebGL에 배열에서 애트리뷰트 값을 제공하려는 것을 전하고 있다는 부분에만 주목합시다. shaderprogram.pmatrixuniform = gl.getuniformlocation(shaderprogram, "upmatrix"); shaderprogram.mvmatrixuniform = gl.getuniformlocation(shaderprogram, "umvmatrix"); initshader의 마지막 부분은 program에서 두개의 값을 보유하고 있습니다. uniform variable라고 하는 것의 location입니다. 나중에 빨리 설명하기 때문에 당분간은 애트리뷰트와 비슷한 것이라고 생각합시다. 값을 편리하게 처리할 수 있도록 program 객체에 저장해 둡니다.

21 지원 함수 - getshader 이제 getshader 함수를 살펴보도록 합니다. function getshader(gl, id) { var shaderscript = document.getelementbyid(id); if (!shaderscript) { return null; var str = ""; var k = shaderscript.firstchild; while (k) { if (k.nodetype == 3) str += k.textcontent; k = k.nextsibling; var shader; if (shaderscript.type == "x-shader/x-fragment") { shader = gl.createshader(gl.fragment_shader); else if (shaderscript.type == "x-shader/x-vertex") { shader = gl.createshader(gl.vertex_shader); else { return null; gl.shadersource(shader, str); gl.compileshader(shader); if (!gl.getshaderparameter(shader, gl.compile_status)) { alert(gl.getshaderinfolog(shader)); return null; return shader;

22 이 함수도 보기보다 훨씬 쉽습니다. 여기서 하고 있는 일은 인수로 전달된 ID와 일치하는 요소를 HTML에서 찾아 내용물을 꺼내 fragment가 vertex 중 하나인 shader가 가지는 type(type의 차이점은 미래의 학습)에 따라 작성하여 WebGL이 그래픽 카드에서 작동하게 컴파일을 걸어놓고 있는 것입니다. 다음 코드에 오류가 없는지 확인했습니다. 물론 이 쉐이더를 자바스크립트 코드에 문자열로 통합할 수 있었습니다. 그 경우에는 HTML에서 불러올 부분은 필요하지 않습니다. 그러나 이번 방법은 쉐이더가 페이지의 스크립트가 되므로 자바스크립트처럼 쉽게 읽을 수 있습니다. 하드웨어 언어 - Shader 그것을 근거로 쉐이더 코드를 살펴봅시다. <script id="shader-fs" type="x-shader/x-fragment"> #ifdef GL_ES precision highp float; #endif void main(void) { gl_fragcolor = vec4(1.0, 1.0, 1.0, 1.0); </script> <script id="shader-vs" type="x-shader/x-vertex"> attribute vec3 avertexposition; uniform mat4 umvmatrix; uniform mat4 upmatrix;

23 void main(void) { gl_position = upmatrix * umvmatrix * vec4(avertexposition, 1.0); </script> 가장 명심해야 할 것은 이들은 자바스크립트로 작성되어 있지 않다는 것입니다. 사실, 쉐이더 코드는 C언어의 영향을 강하게 받은(물론 자바스크립트도) 특별한 쉐이더 언어로 작성되어 있습니다. 첫 번째 스크립트는 fragment shader입니다. 하지만 그리 복잡해 보이지는 않군요. 이 코드에는 그래픽 카드에 float의 정밀도를 지정하는데 반드시 포함하지 않으면 안되는 마스크의 일부분이 있습니다. 아래는 렌더링되는 모든 것이 간단하게 흰색으로 렌더링하도록 지정합니다.(색상에 관한 사항은 다음 레슨에서 설명합니다) 다음 쉐이더는 더욱 재미있습니다. 이것은 vertex shader입니다. 기억 하겠지만, vertex shader는 vertex를 사용하여 매우 여러가지 일을 꾸밀수 있게 하며, 이 역시 그래픽 카드에서 실행되는 코드입니다. 여기에 관련한 umvmatrix과 upmatrix라는 두개의 uniform 변수가 있습니다. uniform 변수는 쉐이더 외부에서 액세스할 수 있기 때문에 유용합니다. - 특히, program이 있는 곳과 관계가 있습니다. initshaders에서 location을 꺼내는데 다음으로 보이는 model-view와 projection matrix를 설정하는 부분입니다. 당신은 쉐이더 프로그램을 (객체 지향의) object와 uniform 변수 field 정도로 간주해 버릴지도 모르겠네요. 이제 모든 버텍스에 대해 쉐이더가 호출됩니다. 그리고 버텍스는 drawscene 내부 vertexpositionattribute으로 애트리뷰트와 버퍼를

24 연관지 쉐이더에 VertexPosition로 전달됩니다. vertex shader의 main 함수 내부의 작은 코드는 버텍스에 model-view matrix와 projection matrix를 곱한 결과를 최종 버텍스 좌표로 출력하는 것입니다. 그래서, webglstart는 initshaders를 부르고 그 안에 getshader를 사용하여 fragment와 vertex shader를 페이지 내의 스크립트에서 검색하여 컴파일하고 WebGL로 전달하여 3D 화면을 그릴 때 사용되는 것입니다. 지원 함수 - setmatrixuniforms 이제 끝으로 설명할 녀석은 setmatrixuniforms 함수입니다. 이것은 지금까지의 내용을 알고 있다면 매우 간단하게 이해할 수 있습니다. function setmatrixuniforms() { gl.uniformmatrix4fv(shaderprogram.pmatrixuniform, false, new Float32Array(pMatrix.flatten())); gl.uniformmatrix4fv(shaderprogram.mvmatrixuniform, false, new Float32Array(mvMatrix.flatten())); 여기에서는 initshader 함수에서 얻은 projection matrix와 model-view matrix를 나타내는 uniform 변수에 대한 참조를 사용하여 WebGL에 자바스크립트 형식의 매트릭스를 전달합니다. 휴~ 처음 학습치고는 꽤 양이 많았네요. 이 레슨은 여러분과 제가 앞으로 더욱 재미있는 것을 만드는데 필요한 것들입니다. 기본적으로 필요한

25 항목을 모두 이해했습니다. 색상, 운동, 실재 3차원 입체 WebGL 모델들에 대하여 말예요. 그리고 더 많은 것을 공부하기 위해 레슨 2로 이어집니다. 짬짬히 작성 하다보니 많이 늦어졌네요. 정확하게 모두 이해하지는 못했지만 몇몇 그래픽 용어를 숙지하고 대략적인 작동 원리를 이해하는 중요한 학습이였습니다. 그리고 보시다시피 이 문서는 다소 어눌합니다. 확실히 이해하고 작성한 것이 아니기 때문에 저도 무슨 말을 하려고 하는지 모르는 부분이 상당수 있었습니다. 그리고 원문을 보면 이양반 말하는 스타일이 그리 논리적이지는 못한 느낌을 자주 받았는데, 일단 그런 부분들은 대략적으로 직역했지만 계속 학습하면서 조금씩 다듬어 가도록 하겠습니다. Powered by TCPDF (

WebGL 레슨 3 - 회전 운동

WebGL 레슨 3 - 회전 운동 Created by Firejune at 2011/04/20, Last modified 2016/09/11 WebGL 레슨 3 - 회전 운동 세 번째 WebGL 레슨에 오신 것을 환영합니다. 레슨 2에 이어 이번 레슨에서는 객체가 회전 운동을 할 수 있도록 합니다. 이번 학습은 NeHe OpenGL의 네 번째 튜토리얼을 바탕으로 합니다. 다음 동영상은 이번

More information

WebGL 레슨 5 - 텍스쳐에 대하여

WebGL 레슨 5 - 텍스쳐에 대하여 Created by Firejune at 2011/05/20, Last modified 2016/08/28 WebGL 레슨 5 - 텍스쳐에 대하여 다섯 번째 WebGL 레슨에 오신 것을 환영합니다. 이 학습은 "NeHe OpenGL의 여섯 번째 튜토리얼"을 바탕으로 하고 있습니다. 이번 레슨에서는 지금까지 만들었던 3D 오브젝트에 텍스처(Texture)를 입혀봅니다.

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 11. 자바스크립트와캔버스로게임 만들기 캔버스 캔버스는 요소로생성 캔버스는 HTML 페이지상에서사각형태의영역 실제그림은자바스크립트를통하여코드로그려야한다. 컨텍스트객체 컨텍스트 (context) 객체 : 자바스크립트에서물감과붓의역할을한다. var canvas = document.getelementbyid("mycanvas"); var

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

PathEye 공식 블로그 다운로드 받으세요!!   지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는

More information

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기 소규모 비즈니스를 위한 YouTube 플레이북 YouTube에서 호소력 있는 동영상으로 고객과 소통하기 소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

More information

새로운 지점에서 단이 시작하는 경우 기둥코로 시작하라고 표시합니다. 기둥코(standing stitch)로 시작하는 방법은 YouTube 에서 찾아볼 수 있습니다. 특수 용어 팝콘뜨기: 1 코에 한길긴뜨기 5 코, 바늘을 빼고 첫번째 한길긴뜨기코의 앞에서 바늘을 넣은

새로운 지점에서 단이 시작하는 경우 기둥코로 시작하라고 표시합니다. 기둥코(standing stitch)로 시작하는 방법은 YouTube 에서 찾아볼 수 있습니다. 특수 용어 팝콘뜨기: 1 코에 한길긴뜨기 5 코, 바늘을 빼고 첫번째 한길긴뜨기코의 앞에서 바늘을 넣은 Desire Copyright: Helen Shrimpton, 2016. All rights reserved. By: Helen at www.crystalsandcrochet.com 12 인치 모티브 worsted/aran(10ply), 5mm 바늘 사용 약 10인치 Double Knitting(8ply), 4mm 바늘 사용 미국식 용어를 사용합니다. 약어

More information

Microsoft PowerPoint - lecture3-ch2.ppt [호환 모드]

Microsoft PowerPoint - lecture3-ch2.ppt [호환 모드] Coordinate Systems Graphics Programming 321190 2014 년봄학기 3/14/2014 박경신 2D Cartesian Coordinate Systems 3D Cartesian Coordinate Systems Cartesian Coordination Systems -x +y y-axis x-axis +x Two axes: x-axis

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가 수업주제 경찰 출동! (버튼, LED, 버저 사용하기) 9 / 12 차시 수업의 주제와 목표 본 수업에서는 이전 차시에 배웠던 블록들의 기능을 복합적으로 활용한다. 스위치 기능을 가진 버튼을 활용하여 LED와 버저를 동시에 작동시키도록 한다. 각 블록들을 함께 사용하는 프로젝트를 통해 각각의 기능을 익히고 보다 다양한 활용 방법을 구상할 수 있다. 교수 학습

More information

Web Scraper in 30 Minutes 강철

Web Scraper in 30 Minutes 강철 Web Scraper in 30 Minutes 강철 발표자 소개 KAIST 전산학과 2015년부터 G사에서 일합니다. 에서 대한민국 정치의 모든 것을 개발하고 있습니다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 스크래퍼/크롤러의 작동 원리를 이해한다. 목표

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Translation Song 1 Finger Family 한글 해석 p.3 아빠 손가락, 아빠 손가락. p.4 p.5 엄마 손가락, 엄마 손가락. p.6 p.7 오빠 손가락, 오빠 손가락. p.8 p.9 언니 손가락, 언니 손가락. p.10 p.11 아기 손가락, 아기 손가락. p.12 p.13 p.14-15 재미있게 부르기 (Sing and Play Time)

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 CHAPTER 13. HTML5 위치정보와드래그앤드롭 SVG SVG(Scalable Vector Graphics) 는 XML- 기반의벡터이미지포맷 웹에서벡터 - 기반의그래픽을정의하는데사용 1999 년부터 W3C 에의하여표준 SVG 의장점 SVG 그래픽은확대되거나크기가변경되어도품질이손상되지않는다. SVG 파일에서모든요소와속성은애니메이션이가능하다. SVG 이미지는어떤텍스트에디터로도생성하고편집할수있다.

More information

RHEV 2.2 인증서 만료 확인 및 갱신

RHEV 2.2 인증서 만료 확인 및 갱신 2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_

More information

SproutCore에 홀딱 반했습니다.

SproutCore에 홀딱 반했습니다. Created by Firejune at 2009/10/30 SproutCore에 홀딱 반했습니다. 회사에서 첨여중인 프로젝트의 시제품(prototype)에 SproutCore 자바스크립트 프레임웍을 적용한 것을 시작으로, 아주 조금씩 조금씩 작동원리를 이해해 가면서 즐거운 나날을 보내고 있습니다. 그렇게 약 2개월 정도 작업이 진행되었고 큰 그림이 머리속에

More information

750 1,500 35

750 1,500 35 data@opensurvey.co.kr 750 1,500 35 Contents Part 1. Part 2. 1. 2. 3. , 1.,, 2. skip 1 ( ) : 2 ( ) : 10~40 (, PC, ) 1 : 70 2 : 560 1 : 2015. 8. 25~26 2 : 2015. 9. 1 4 10~40 (, PC, ) 500 50.0 50.0 14.3 28.6

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집 Modern Modern www.office.com ( ) 892 5 : 1577-9700 : http://www.microsoft.com/korea Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

Node.JS와 Express를 이용한 디렉터리 파싱

Node.JS와 Express를 이용한 디렉터리 파싱 Created by Firejune at 2011/11/15, Last modified 2016/09/10 Node.JS와 Express를 이용한 디렉터리 파싱 어떠한 데이터라도 받기만 하면 비주얼라이제이션하는 데에는 자신있다고 자부해 왔습니다. 그러나 며칠간 고민에 빠져들게 하는 과제가 하나 생겼습니다. 그것은 바로 '/dir1/dir2/file.name'과

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제 Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, 2018 1 1.1 Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제 6.5에서 찾아볼 수 있다. http://incompleteideas.net/book/bookdraft2017nov5.pdf

More information

2015년9월도서관웹용

2015년9월도서관웹용 www.nl.go.kr 국립중앙도서관 후회의 문장들 사라져 버릴 마음의 잔해 지난해와 마찬가지로 이번 해에도 배추농사에서 큰돈을 남은 평생 머릿속에서 맴돌게 될 그 말을 다시 떠올려보 만졌다 하더라도 지난 여름 어느 날 갑자기 들기 시작한 았다. 맺지 못한 채 끝나버린 에이드리언의 문장도 함께. 그 생각만은 변함없을 것 같았다. 같은 나이의 다른 아이 그래서

More information

<B3EDB9AEC0DBBCBAB9FD2E687770>

<B3EDB9AEC0DBBCBAB9FD2E687770> (1) 주제 의식의 원칙 논문은 주제 의식이 잘 드러나야 한다. 주제 의식은 논문을 쓰는 사람의 의도나 글의 목적 과 밀접한 관련이 있다. (2) 협력의 원칙 독자는 필자를 이해하려고 마음먹은 사람이다. 따라서 필자는 독자가 이해할 수 있는 말이 나 표현을 사용하여 독자의 노력에 협력해야 한다는 것이다. (3) 논리적 엄격성의 원칙 감정이나 독단적인 선언이

More information

Print

Print 22-12324-4TEL:3668-3114 FAX:742-3387 TEL:3668-3120 FAX:745-9476 TEL:3668-3109, 2279-0867~8 TEL:3668-3127 TEL:3668-3123, 3128, 3162 www.saeki.co.kr, www.pentaximaging.co.kr Small 의 큰 스타일을 경험하다 당신의 카메라만으로도,

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

!

! ! !"!# $# %! %" %#& %' %(& "! "% "# "( #$& #%& ##& #'&!"#$%&'(%)%&*+'$%,-#. ' (%%%!"#$&'(%%% / 0%%%!"#$&'(%%% 1 2%%%!"#$&'(%%% +* ++%%%!"#$&'(%%% +& +3%%%!"#$&'(%%% +' +(%%%!"#$&'(%%% +/ +0%%%!"#$&'(%%%

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

Javascript

Javascript 1. HTML 이란? HTML 은 Hyper Text Mark Up Language 의약자로예약되어있는각종태그라는명령어를이용하여웹페이지를작성할때사용하는언어입니다. 2. HTML 의기본구조 < 태그 > 내용 < 태그속성 = 변수 > 내용

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

© Rohde & Schwarz; R&S®CDS Campus Dashboard Software

© Rohde & Schwarz; R&S®CDS Campus Dashboard Software Product Brochure Version 03.00 R&S CDS Campus Dashboard Software 멀티 유저 실험, 실습실을 위한 교육용 소프트웨어 CDS_bro_ko_3607-9308-16_v0300.indd 1 18.02.2019 10:28:33 R&S CDS Campus Dashboard Software 개요 R&S CDS Campus

More information

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1 그래픽스강의노트 06 - 조명 1 강영민 동명대학교 2015 년 2 학기 강영민 ( 동명대학교 ) 3D 그래픽스프로그래밍 2015 년 2 학기 1 / 25 음영 계산의 필요성 음영(陰影) 계산, 혹은 셰이딩(shading)은 어떤 물체의 표면에서 어두운 부분과 밝은 부분을 서로 다른 밝기로 그려내는 것 모든 면을 동일한 색으로 그리면 입체감이 없다. 2 /

More information

(초등용1)1~29

(초등용1)1~29 3 01 6 7 02 8 9 01 12 13 14 15 16 02 17 18 19 20 21 22 23 24 03 25 26 27 28 29 01 33 34 35 36 37 38 39 02 40 41 42 43 44 45 03 46 47 48 49 04 50 51 52 53 54 05 55 56 57 58 59 60 61 01 63 64 65

More information

IP Cam DDNS 설정설명서(MJPEG)-101021.hwp

IP Cam DDNS 설정설명서(MJPEG)-101021.hwp PH-MIP001 PH-MIP002 PH-MIP003 기능이란? 대부분의 자가 가입한 인터넷 서비스는 유동IP 방식을 합니다. 유동IP 방식은 필요에 따라 할당되는 IP가 변화하기 때문에 공유기 또는 공유기에 연결된 를 외부에서 접근이 필요할 경우 불편함을 느낄 수 있습니다. (Dynamic DNS)는 이와같은 불편함을 해소하기 위해 자가 지정한 도메인 이름으로

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 03 모델변환과시점변환 01 기하변환 02 계층구조 Modeling 03 Camera 시점변환 기하변환 (Geometric Transformation) 1. 이동 (Translation) 2. 회전 (Rotation) 3. 크기조절 (Scale) 4. 전단 (Shear) 5. 복합변환 6. 반사변환 7. 구조변형변환 2 기하변환 (Geometric Transformation)

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

»êÇÐ-150È£

»êÇÐ-150È£ Korea Sanhak Foundation News VOL. 150 * 2011. 12. 30 논단 이슈별 CSR 활동이 기업 충성도에 미치는 영향 : 국가별 및 산업별 비교분석 최 지 호 전남대 경영학부 교수 Ⅰ. 서론 Ⅰ. 서론 Ⅱ. 문헌 고찰 및 가설 개발 2. 1. 호혜성의 원리에 기초한 기업의 사회적 투자에 대한 소

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

버퍼오버플로우-왕기초편 3.c언어에서버퍼사용하기 버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도

버퍼오버플로우-왕기초편 3.c언어에서버퍼사용하기 버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도 버퍼는 임시기억공간 이라는포괄적인개념이기때문에여러곳에존재할수있습니다. 즉, CPU 에도버퍼가존재할수있으며, 하드디스크에도존재할수있고, CD- ROM 이나프린터에도존재할수있습니다. 그리고앞의예제에서보신바와같이일반프로그램에도존재할수있습니다. 이번시간엔프로그램에서버퍼를사용하는법, 그중에서도 C 언어에서버퍼를사용하는방법에대해배워보겠습니다. C 언어에서버퍼를사용하는가장쉬운방법은바로변수를선언하는것인데,

More information

Microsoft PowerPoint - lecture17-ch8.ppt [호환 모드]

Microsoft PowerPoint - lecture17-ch8.ppt [호환 모드] Single-Pass Multitexturing y (1,1) v (1,1) Blending 514780 2017 년가을학기 11/23/2017 단국대학교박경신 void SetMultitexturSquareData() { // 중간생략.. x glgenbuffers(4, &vbo[0]); u (-1,-1) (0,0) glbindbuffer(gl_array_buffer,

More information

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

2_안드로이드UI

2_안드로이드UI 03 Layouts 레이아웃 (Layout) u ViewGroup의파생클래스로서, 포함된 View를정렬하는기능 u 종류 LinearLayout 컨테이너에포함된뷰들을수평또는수직으로일렬배치하는레이아웃 RelativeLayout 뷰를서로간의위치관계나컨테이너와의위치관계를지정하여배치하는레이아웃 TableLayout 표형식으로차일드를배치하는레이아웃 FrameLayout

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12 서피스셰이더프로그램 셰이더개발을쉽게! 유니티렌더링시스템소개 렌더링패스 셰이더랩 서피스셰이더 데모 2 유니티렌더링시스템 3 Deferred Lighting Rendering Path Dual Lightmapping Post Effect Processing Realtime Shadow LightProbe Directional Lightmapping HDR Gamma

More information

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표 Vector Differential: 벡터 미분 Yonhee Lee October 7, 08 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표기법을 정의하는 방법이다 보통 스칼라(scalar)에 대한 미분은 일분수 함수 f : < < 또는 다변수 함수(function

More information

Prototype에서 jQuery로 옮겨타기

Prototype에서 jQuery로 옮겨타기 Created by Firejune at 2008/11/10, Last modified 2016/09/11 Prototype에서 jquery로 옮겨타기 jquery는 겸손한(unobtrusive) 자바스크립트를 위한 자바스크립트 라이브러리다. jquery는 태생적으로 BDD(Behavior driven development) 방법론을 지향하고 CSS 셀렉터를

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

IRISCard Anywhere 5

IRISCard Anywhere 5 이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

내지(교사용) 4-6부

내지(교사용) 4-6부 Chapter5 140 141 142 143 144 145 146 147 148 01 02 03 04 05 06 07 08 149 활 / 동 / 지 2 01 즐겨 찾는 사이트와 찾는 이유는? 사이트: 이유: 02 아래는 어느 외국계 사이트의 회원가입 화면이다. 국내의 일반적인 회원가입보다 절차가 간소하거나 기입하지 않아도 되는 개인정보 항목이 있다면 무엇인지

More information

레이아웃 1

레이아웃 1 03 04 06 08 10 12 13 14 16 한겨울의 매서운 추위도 지나가고 어느덧 봄이 성큼 다가왔습니다. 소현이가 이 곳 태화해뜨는샘에 다닌 지도 벌써 1년이 지났네요. 해샘에 처음 다닐 때는 대중교통 이용하는 것도 남을 의식해 힘들어하고, 사무실내에서 사람들과 지내는 것도 신경 쓰여 어려워했었습니다. 그러던 우리 소현이가 하루, 이틀 시간이 지나면서

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

Open GL

Open GL Graphics Basic Windows & OpenGL Programming 컴퓨터그래픽스연구실 OpenGL 관련참고사이트 OpenGL 공식사이트 http://www.opengl.org/ Khronos Group http://www.khronos.org/ Nehe Productions http://nehe.gamedev.net/ OpenGL 파일설정 압축을푼후다음경로로파일을복사

More information

152*220

152*220 152*220 2011.2.16 5:53 PM ` 3 여는 글 교육주체들을 위한 교육 교양지 신경림 잠시 휴간했던 우리교육 을 비록 계간으로이지만 다시 내게 되었다는 소식을 들으니 우 선 반갑다. 하지만 월간으로 계속할 수 없다는 현실이 못내 아쉽다. 솔직히 나는 우리교 육 의 부지런한 독자는 못 되었다. 하지만 비록 어깨너머로 읽으면서도 이런 잡지는 우 리

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

1 (1) 14 (2) 25 25 27 (3) 31 31 32 36 41 2 (1) 48 (2) 56 (3) 63 72 81 3 (1) 88 88 92 (2) 96 (3) 103 103 104 107 115 4 (1) 122 (2) 129 (3) 135 135 141 153 165 5 (1) 172 (2) 187 (3) 192 201 207 6 (1) 214

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

Microsoft PowerPoint - lecture4-ch2.ppt

Microsoft PowerPoint - lecture4-ch2.ppt Graphics Programming OpenGL Camera OpenGL 에서는카메라가물체의공간 (drawing coordinates) 의원점 (origin) 에위치하며 z- 방향으로향하고있다. 관측공간을지정하지않는다면, 디폴트로 2x2x2 입방체의 viewing volume을사용한다. (1, 1, 1) 321190 2007년봄학기 3/16/2007 박경신

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

User Guide

User Guide HP ThinUpdate 관리자 설명서 Copyright 2016 HP Development Company, L.P. Windows는 미국 및/또는 기타 국가에서 Microsoft Corporation의 등록 상표 또는 상표입 니다. 기밀 컴퓨터 소프트웨어. 소유, 사용 또는 복사 에 필요한 유효한 사용권을 HP로부터 취득했 습니다. FAR 12.211 및

More information

Microsoft Word - cg07-midterm.doc

Microsoft Word - cg07-midterm.doc 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 맞으면 true, 틀리면 false를적으시오.

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information