본문 바로가기

SSM

TrueType Font Glyph TrueType 폰트를 구성하는 글자 하나하나를 Glyph(글립)이라한다. 글립을 나타내기 위해 TrueType 폰트는 외곽선(contour)의 함수를 이용하는데, Bezier Spline곡선이 이용된다. Bezier Spline은 연속된 Bezier Curve로 TrueType 폰트는 이와 같이 수학적 함수를 이용하여 폰트를 그리기 때문에 비트맵 폰트가 가지고 있는 약점(폰트의 크기를 변경할 때 계단현상이 발생한다)을 극복하고 매끄러운 글꼴을 화면이나 프린터에 인쇄할 수 있다. TrueType 폰트에서 사용하는 Quadratic Bezier Curve의 함수식은 아래와 같다. 위의 함수식을 이용하여 아래와 같이 곡선이 그려진다. Construction of a quadratic Bézier curve .. 더보기
Introduction to Handwritten font A2Z 안녕하십니까 16년동안 손글씨만 써온 손글씨의 달인 악필 조일용입니다. 우리 악필팀은 17기 조일용과 18기 김정훈 두명이구요 손글씨 A2Z 프로젝트를 진행하고 있습니다. 이번 포스팅에선 손글씨 A2Z를 소개하도록 하겠습니다. 우선 시작발표회때 사용한 PPT를 보시겠습니다. 간단히 말해 프로젝트의 목적은 사름의 손글시를 컴퓨터상의 폰트로 만들어 주는 프로그램을 작성하는 것입니다. 현재 폰트를 만드는 프로세스는 폰트 디자이너의 각고의 수작업을 통한 노력끝에 하나의 폰트가 만들어지기까지 수주에서 길게는 몇 달이 걸리는데, 우리는 누구든지 자기 글씨를 쉽고 빠르게 폰트로 만들수 있게끔 하고 싶었고 이 프로젝트는 이런 목적을 가지고 시작되었습니다. 프로젝트가 완료되면 다음의 과정을 통해 폰트를 만들 수 있습니다.. 더보기
알고리즘 코딩기법 - 8. 쉬어가기 안녕하세요. 17-2기 조일룡입니다. 기말고사 시험기간인데 다들 공부 잘 하고 계신지 모르겠네요. 저는 이번 기말고사 션하게 말아먹을 것 같습니다. ㅠ 기말고사 시즌인 관계로 이번 블로그는 머리를 식힐겸 퍼즐을 하나 준비했습니다. 이건 18-2기 여러분들 들어오셨을 때 집중세미나 시간에 했던거 재탕인데요.. 뭐 뒷북이지만 괜찮겠지여 ㅋㅋ 지뢰찾기 퍼즐 지뢰찾기는 다 해보셨으리라 생각되므로 자세한 설명은 생략하겠습니다. 위의 지뢰판에서 숫자는 자기과 양옆의 칸에 있는 지뢰의 수를 알려줍니다. 한 칸에는 최대 하나의 지뢰만이 있을 수 있습니다. 그렇다면 위의 그림에는 몇 개의 지뢰가 있을까요? 지뢰찾기 고수분들은 그림 대충 보고 지뢰가 어디에 있는지 금방 찾으실거라 생각되는데여 사실 지뢰찾기 한 번도 해보지.. 더보기
알고리즘 코딩기법 - 7. Bit 연산 Brute Force 안녕하세요 조일룡입니다. 이번에는 2진수를 이용하여 모든 경우의 수를 탐색하는 Brute Force에 대해 알아보겠습니다. Brute Force Brute Force는 문제를 해결할 수 있을지도 모를 모든 후보 해를 전부다 탐색하여 정말로 문제를 풀 수 있는 해를 찾는 방법입니다. 쉽게 생각해서 문제가 1 + x = 100 인 경우 이 문제의 해 x가 [0, 100] 사이의 자연수라는 것을 안다고 가정했을 때 단순히 x에 0부터 100까지 모두 대입해 보고 문제가 풀리는 x값을 찾는식의 방법입니다. 물론 저 문제를 저렇게 푸는 바보는 없어야 하겠죠? 여튼 위의 '예' 처럼 Brute Force는 해법이 간단하고 쉬운 반면 모든 후보해를 탐색해야하기 때문에 상당히 느리다라는 단점이 있습니다. 그럼에도 Br.. 더보기
알고리즘 코딩기법 - 6. 상태를 나타내는 값싼 방법(bits) 안녕하세요 17기 조일룡입니다. 이번 포스팅에서는 2진수를 사용하여 상태를 나타내는 기법에 대해서 살펴보겠습니다. 많은 경우에 어떤 상태는 Yes나 No로 나타낼 수 있습니다. 예를 들면 쟁반위에 사과가 있냐/없냐 와 같은 상태가 있을 수 이겠네요. 초기에 쟁반위에 사과, 배, 참외, 수박, 포도가 있었는데 누군가 과일을 먹어서 어떤 것은 없어졌습니다. 이때 가능한 상태는 모두 32(=2^5)가지가 됩니다. 프로그램을 작성하면서 위와 같은 상태를 나타내야 하는 경우는 종종 발생합니다. 그리고 어떻게든 나타내게 되겠지요.. 각각의 과일마다 boolean type의 변수를 하나식 만들 수도 있고 좀 더 똑똑한 누군가는 boolean type의 배열을 선언할 수도 있습니다. 오늘 포스팅에서는 bit를 이용하여.. 더보기
알고리즘 코딩기법 - 5. STL 안녕하세요 조일룡입니다. 오늘은 C++에서 표준 라이브러리로 채택된 STL에 대해 간략하게 알아보겠습니다. STL은 Standard Template Library의 약자로 템플릿을 이용한 표준 라이브러리.. 뭐 이정도의 의미를 가지고 있습니다. 아래의 주소에서 STL에 대한 모든것을 알 수 있습니다. http://www.cplusplus.com/reference/stl/ 이번 포스팅에서는 템플릿에대해 잠깐 짚어보고, STL에서 제공하는 컨테이너 중 가장 흔히 사용하는 'vector'에 대해 알아보겠습니다. Template 템플릿을 건너뛰고 싶었지만 역시 언급을 해야할 것 같습니다. 템플릿은 컴파일타임에 자료형을 확정하여 그 자료형에 맞는 코드를 생성하는 C++에서 제공하는 기능입니다. 두개의 정수형 변수.. 더보기
알고리즘 코딩기법 - 4. 바이너리서치 안녕하세요. 오늘은 바이너리서치(Binary Search) 의 코딩법에 대해서 알아보겠습니다. 숫자맞추기 참이슬을 까고나면 병뚜껑을 꼬은 다음에 손가락으로 쳐서 끊어지면 그 전사람이 벌주를 마시는 게임이 있죠?? 그리고 나서 벌주를 마신 사람은 병뚜껑에 있는 숫자를 보고 업&다운을 해서 그 숫자를 부른 사람이 또 벌주를 마십니다. (이거 우리 학교만 하나요?) 혹시나 모르시는 분이 있을까봐 부가 설명을 드리겠습니다. 참이슬 병뚜껑에는 [1, 50] 사이의 숫자가 찍혀있습니다. 한사람씩 숫자를 부르면 정답을 아는 사람이 정답에 지금 부른 숫자보다 큰지 작은지를 알려줍니다. 그 다음 사람은 좁혀진 범위 내에서 숫자를 다시 부릅니다. 그럼 범위가 점점 좁혀지고 누군가 숫자를 맞추게 되는데 그 사람이 벌주를 마.. 더보기
알고리즘 코딩기법 - 3. 재귀호출 안녕하세요.. 저번 포스팅에서 예고해드린데로 이번에는 재귀호출에 대해서 다뤄볼까합니다. 물론 멤버십에 계신분들중에 재귀호출을 어려워 하실 분들은 없으리라 생각하는데요, 학교에서 주위를 살펴보면 재귀호출을 잘 못하는 친구나, 후배나, 등등 많은 것 같습니다. 그 만큼 재귀호출이 직관적으로 이해가 잘 안되는 부분인가 봅니다. C++과 싸우다 보면 포인터에서 한 번 좌절을 하게 되고 포인터를 넘고나면 재귀호출이 또다시 태클을 건다는.. 뭐 그런 전설이 내려오는데요.. 저도 지금 재귀호출을 어떻게 다뤄야할지 막막합니다 ㅠㅠ 뭐.. 어쨌든..... 각설하고 시작하겠습니다. 재귀(Recursion) 주어진 문제를 재귀적으로 푼다는 말은 문제의 답이 그 문제와 동일한 형태의 더 작은 부분문제(sub problem)의.. 더보기
알고리즘 코딩기법 - 2. 차수 안녕하세요. 이번에는 지난 포스팅에 이어 알고리즘의 차수에 대해서 알아보겠습니다. 지난글의 마지막에 이번시간부터는 본격적으로 코딩기법에 대해서 포스팅하겠다고 했는데 생각을 해보니 일단 차수에 대해서는 언급을 하고 넘어가야 할 것 같아서 순서를 바꿨습니다 ^^ 알고리즘의 분석 알고리즘이 문제를 얼마나 효과적으로 해결하는지를 결정하기 위하여 알고리즘을 분석할 필요가 있습니다. '알고리즘 코딩기법 1 - Introduction' 에서 소개했던 순차검색과 이분검색의 비교가 바로 알고리즘의 분석이라고 할 수 있고 분석결과 n이 커질수록 이분검색이 유리하다고 결론을 내렸었는데요, 이번 파트에서는 알고리즘의 분석에 대해서 좀 더 자세히 알아보겠습니다. 복잡도 분석(complexity analysis) 시간을 기준으로.. 더보기
알고리즘 코딩기법 - 1. Introduction 안녕하세요 SSM17.2기 (17-2기 라고 해야 맞는건가요?) 조일룡입니다. 온라인 개인형 맞춥시그 - 가칭 주제없는 시그 - 에서 제가 맡은 주제는 '알고리즘 코딩기법' 입니다. 주제는 뭐 저렇구요.. 코딩 얘기만 하는 것이 아니라 이것 저것 다양한 주제로 포스팅을 해 볼까 합니다. 주로 참고할 레퍼런스로는... The Art of Computer Programming / Donald E. Knuth (ISBN:9788979144307) Introduction to Algorithm / Cormen (ISBN:9788979143171) 생각하는 프로그래밍 / Jon Bentley (ISBN:9788995300930) 와 각종 인터넷을 참고하겠습니다. 우선 오늘은 첫 포스팅이니 만큼 가벼운 주제로 시작.. 더보기