IT86 [ 3D Modeling ] Sweep Representation Sweep Representation Polygon 말고 다른 걸로 표현해보자. 어떤 평면을 한바퀴 돌려서 만들어보자. Sweep. 그래서 외곽선만 주고, 중심축만 주면 3D를 표현할 수 있다. 이것도 어떤 외곽선을 돌려서 만든 3D 물체이다. 이것은 중심축에서 얼마나 떨어져 있나 거리만 표시해주면 된다. 그럼 중심축이 휘면 물체도 휘게 된다. 만약 많이 휘게 되면 접히는 부분이 생길 수도 있어 주의해야 한다. [참고] Interactive Computer Graphics: A Top-Down Approach with Shader-based OpenGL 6th edition / 저자: Edward Angel, Dave Shreiner / 출판사: Pearson Education 2020. 10. 24. [ 3D Modeling ] Polygonal Representation Polygonal Representation 3D Object Modeling이란? 어떤 것들을 정규화된 형식으로 표현하는 것이라고 말할 수 있다. 어떤 물건 혹은 물체 등을 3차원에 존재하는 물건 혹은 물체 등으로 형식적인 방법으로 Representation하는 것이라고 할 수 있다. Representation 어떻게 표현할 것인가. 어떤 데이터로 바꿔서 저장할 것인가. 결과적으로 데이터가 저장된 형식이 중요하다. 그런데 이 데이터가 바뀌니(캐릭터가 움직이는 등) 바뀌는 것에 대응하는 방법들을 고민해야 했다. 어떻게 하면 데이터를 잘 저장하고, 잘 표현할 지 고민하는 분야가 그래픽스 분야이다. modeling에 필요한 데이터를 어떻게 만들까도 고민했다. 어떻게 표현할까에 대한 방법에는 여러가지가 있다... 2020. 10. 24. [ 컴퓨터구조 ] MIPS Design Principles MIPS Design Principles 하드웨어 설계 원칙 1. Simplicity favors regularity 간단해지기 위해서 같은 형태를 사용하는 것이 좋다. (Operation 글) - Arthmetic Operation은 동일한 형태를 지닌다. - 고정된 instuction의 size - instruction formats의 small number - Opcode는 항상 6bit로 이루어진다. 2. Smaller is faster 적을수록 더 빠르다. (Operands 글) - 적은 수의 register, 적은 수의 instruction set을 가짐으로써 빠르고 작게 구현 - 제한된 addressing modes의 수 3. Make the common case fast 자주 생기는 일을 .. 2020. 10. 22. [ 컴퓨터구조 ] MIPS Instructions (+Instruction to binary) MIPS Instructions (+Instruction to binary) MIPS instruction의 종류와 instruction이 어떻게 binary code로 바뀌는지 살펴보자. 사람과 컴퓨터는 소통해야 한다. 소통하는 과정은 크게 3가지로 볼 수 있다. High-Level Language ( C언어 ) 가 compiler를 통해 MIPS Assembly Language로 변환되고, Assembler를 통해 기계가 이해할 수 있는 Binary machine Language로 변환된다. 여기서 MIPS Assembly Language 단계에서 예를 하나 들어보자. add $t0, $s1, $s2 $s1 과 $s2 를 더해 $t0 에 저장하라는 뜻이다. 이것은 하나의 명령어, 즉 하나의 instr.. 2020. 10. 22. 재귀 - 2진수 변환 재귀 - 2진수 변환 문제 출저 - 코드업 codeup.kr/problem.php?id=1920 풀이 생각 1. 2진수로 표현한다. => 결국 2로 나누는 연산과 관련 있을 것임 => 2로 나눈 나머지가 1이면 1, 0이면 0을 붙여나가주자 2. 출력값을 역순으로 해주어야 함 => 스택으로 구현 * 그런데 이 문제에서 for문 사용이 불가해 채점이 불가했음 => 스택말고 string으로 구현하고, 역순으로 만들어주고 출력해주자 my code (stack) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include #include using namespace std; vector binar.. 2020. 9. 28. [ OpenGL ] GLEW + GLM 설치 및 설정 GLEW + GLM 설치 및 설정 이전 글(GLFW 설치 및 설정)과 이어서 작성하였습니다. ● GLFW 설치 및 설정 -> inyongs.tistory.com/117 ● 목차 1. GLEW 설치 및 설정 2. GLM 설치 및 설정 맥은 GLEW를 따로 다운받지 않고 최신버전으로 할 수 있습니다. 대신 4.1버전까지 사용할 수 있습니다. 맥을 사용하신다면 GLEM은 건너뛰고, GLM만 설치하면 됩니다. (버전 4.1에 대한 내용은 맨 마지막 코드에 있음) 1. GLEW 설치 및 설정 GLEW (OpenGL Extension Wrangler Library) 사용하는 이유 비주얼 스튜디오에 있는 window header 파일이 OpenGL 1.5 버전까지만 지원합니다. (현재는 대략 4.7) header 파.. 2020. 9. 20. Graphics Pipeline architecture Graphics Pipeline architecture ● 순서 1. Vertices (Application program) 2. Vertex Processor 3. Clipper and Primitive Assembler 4. Rasterizer 5. Fragment Processor 6. Pixels (Display) Application에서 Vertices(3차원 상의 점들) 이 들어오고 Vertex Processor에서 vertex processing을 통해 2차원으로 가져오고 Clipper를 통해 이미지를 자르고 Primitive Assembler를 통해 어떤 도형인지 알아내고 Rasterizer를 통해 알아낸 도형에 해당하는 pixel들을 알아내고 Fragment Processor에서 pixe.. 2020. 9. 20. [ OpenGL ] GLFW 기본 + 설치 GLFW 기본 + 설치 ● 목차 1. GLFW 기본 2-1. GLFW 설치, 설정 2-2. window 띄워보기 1. GLFW 기본 GLFW (Graphics Library FrameWork) 의 등장 OpenGL로 window를 띄우고 원하는 컨텐츠를 띄울 수 있다. 그런데 일반 window는 OpenGL을 사용할 수 있도록 연결되어 있지 않다. 이 때 context라는 것이 필요하다. ● OpenGL의 기본 동작 1. 셋팅 2. 그리기 예를 들어서 1. 셋팅 : 앞으로 내가 그리려는 색은 빨간색이야 2. 그리기 : 선을 그린다. => 이러면 빨간 선이 그려지게 된다. 그렇다면 색을 지정하는 부분과 선을 그리는 부분이 독립되어 있다는 것이다. 선을 그릴 때 무슨 색이 저장되어 있는지 누군가 알고 있어야.. 2020. 9. 15. 완전 탐색 - 소수 찾기 보호되어 있는 글 입니다. 2020. 9. 3. DFS - 타겟 넘버 DFS - 타겟 넘버 문제 출저 - 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/43165 풀이 생각 1. 재귀로 첫번째부터 마지막까지의 합을 차근차근 넘겨주자. => sum ± numbers[index] 2. 덧셈과 뺄셈이 있어야함 => 덧셈 재귀 끝난 후 뺄셈 재귀 들어가기 3. 기저사례는? => 마지막 index + 1 일때. numbers.size()와 일치할 때. => 이 때 sum이 targer과 같으면 1 리턴, 다르면 0 리턴 my code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #include using namespace std; int.. 2020. 9. 1. [ 컴퓨터구조 ] ISA (Instruction Set Architecture) ISA (Instruction Set Architecture) ISA란? 하드웨어와 소프트웨어 사이의 Interface를 정의하는 것. 하드웨어와 프로그램 사이의 매개체 역할을 하는 것이다. ISA는 많다 세상에는 많은 ISA가 있다. 칩을 만드는 회사마다 ISA의 종류가 다르다. 회사마다 자신만의 ISA를 가지고 있는 것이다. 흔히 쓰이는 랩탑, 데스크탑, 심지어 서버 컴퓨터까지 전부 Intel, AMD 프로세서를 쓰는 아키텍처를 쓰고 있는데, 이 회사에서는 x86 ISA를 가지고 있다고 얘기를 한다. 그 외에 스마트폰에 쓰이는 ARM 프로세서가 있다. 이 x86과 ARM은 서로 다른 ISA라고 말할 수 있다. 즉, 데스크탑과 스마트폰은 다른 ISA를 가지고 있다고 말할 수 있다. 이것은 이렇게 말할 .. 2020. 9. 1. 무식하게 풀기(완전 탐색) - 모의고사 무식하게 풀기(완전 탐색) - 모의고사 문제 출저 - 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/42840 풀이 생각 1. 누가 많이 맞았을까를 어떻게 알까? => 전부 채점해봐야함. 완전탐색으로 생각하자 2. 각 학생마다 정답 패턴의 크기 (1번=5, 2번=8, 3번=10) 가 다르다. => 각 학생 for문 돌때마다 크기 받아서 처리 3. 정답 주기를 돌려야함 => answers가 7개라면 1번 학생은 6번째에서 다시 0번째로 와야함 => %로 index 만들기 => j%stuSize 4. 최대값을 어떻게 뽑을까? => *max_element 으로 학생들 중 max 정답수 뽑기 => max와 같으면 answer에 넣기 (오름차순까지 해결됨).. 2020. 8. 31. 무식하게 풀기(완전 탐색) - 게임판 덮기 보호되어 있는 글 입니다. 2020. 8. 30. 무식하게 풀기(완전 탐색) - 소풍 무식하게 풀기(완전 탐색) - 소풍 문제 출저 - 알고스팟 https://algospot.com/judge/problem/read/PICNIC 풀이생각 1. 입력되는 n, m값이 작다. => 브루트포스(완전탐색)으로 풀자 2. index로 처리할 수 있는 bool 필요 (쌍 맺기 위해서) 3. 짝을 이미 맺었는지 학생마다 확인필요 => bool 배열 생성. 재귀로 돌려주기 => 매개변수로. 4. 중복을 제거해야 한다. => 오름차순으로 맺어주자. => 앞 번호 친구부터 검사해서 짝을 맺어주자. answer code (알고리즘 문제해결전략 p158~159) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 .. 2020. 8. 30. 무식하게 풀기 (완전 탐색) 무식하게 풀기 (완전 탐색) 완전 탐색? 가능한 방법을 전부 만들어 보는 알고리즘 재귀 호출과 완전 탐색 문제를 들여다볼수록 각 조각들의 형태가 유사해지는 작업. 이런 작업을 구현할 때 유용하게 사용되는 개념이 바로 재귀 함수(recursive function), 혹은 재귀 호출(recursion)이라고 한다. 재귀 함수 자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 뒤 그 중 한 조각을 수행하고, 나머지를 자기 자신을 호출해 실행하는 함수를 가리킨다. 반복문 -> 재귀 바꿔보기 1부터 n까지의 합을 반환하는 for문과 재귀 함수 (알고리즘 문제해결전략1 p147) 1 2 3 4 5 6 7 8 9 10 11 12 int sum(int n) { int ret = 0; for (int i = 1; i 2020. 8. 30. 이전 1 2 3 4 5 6 다음