My first published book

평소 책을 쓰고 싶은 생각은 있었지만 그게 초등학교 수학책이 될줄은 몰랐습니다. 초등수학을 결정하는 개념 총정리 다음은 출판시 누락된 에필로그입니다. [이 책을 마무리하며] 지금까지 초등학교 6년 동안 수학을 배우면서 반드시 알아야 할 내용들에 대해서 정리를 해보았습니다. 이 책의 내용을 충분히 숙지한다면 그 다음 과정인 중학교 수학에서 기본이 부족해서 어려움을 겪는 일은 없을 것이라고 생각합니다. 학습을 한 …

Anaconda + TensorFlow 설치 (Windows 10)

아나콘다(Anaconda)란 파이썬(Python)과 수 백 가지 이상의 데이터 과학 패키지가 종속성 문제 없이 함께 설치되는 종합 패키지이다. 아나콘다(Anaconda)를 사용하면 필요한 여러 패키지들을 별도로 하나씩 설치해주어야 하는 번거로움이 없고 쉽게 가상환경을 만들고 버전 관리를 할 수 있기 때문에 편리하다. 아나콘다(Anaconda)는 다음 경로에서 받을 수 있다. https://www.anaconda.com Individual / Team / Enterprise 중에서 Individual Edition을Python 3.7 / Python …

구의 겉넓이와 부피

반지름이 r인 구(sphere)의 겉넓이와 부피를 계산하는 공식은 각각 다음과 같다. 적분을 이용하면 간단명료하게 위의 두 가지 공식을 증명할 수 있다. (구글이나 유튜브에서 검색해 보면 관련 내용을 쉽게 찾아볼 수 있다.) 하지만, 문제는 중학교 1학년 수학 교과서에 구의 겉넓이와 부피 공식이 등장한다는 것이다. 많은 학생들이 선행학습을 한다고는 하지만 고등학교 2학년 교과과정에서야 배우는 적분을 활용하여 이 공식을 …

How to build OpenCV on Windows

윈도우즈 환경에서 OpenCV 개발 환경을 구성할 때 다음의 두 가지 방법이 있다. 이미 빌드(build)가 되어 있는 바이너리(binary) 파일을 찾아서 설치 소스코드(source code)를 받아서 직접 빌드(build) 1번 방법의 경우 설치가 간편하지만 빌드시 이미 고정되어 있는 여러 가지 옵션들을 변경할 수 없다는 점, 최신 업데이트가 반영되지 않을 수 있다는 점, 그리고 마지막으로 확장 모듈인 OpenCV contrib가 포함되어 …

Visual Studio 프로젝트 환경 설정 상속

Visual Studio에서 작업을 하다 보면 하나의 솔루션(solution) 안에 여러 개의 프로젝트(project)를 만들어서 관리해야 하는 경우가 생긴다. 이 때, 각 프로젝트 마다 개별적으로 설정을 해주는 것은 여간 귀찮은 일이 아니다. (예를 들면, 헤더 파일이 있는 디렉토리 경로 지정 등) Visual Studio에서는 하나의 프로젝트 설정으로 여러 개의 프로젝트의 속성을 관리할 수 있는 방법을 제공한다. 보기(View) > 속성 …

6 DoF Video

다음은 SIGGRAPH Asia 2019 XR Presentations & Talks에 대한 소개이다. 여기서 등장하는 6Dof란 무엇일까? 우선 DOF는 Degree of Freedom의 약자로 자유도(自由度)라는 의미이다. 이와 같이 좌우로만 왔다 갔다 하는 스프링의 자유도는 1이다. 왜냐하면 하나의 변수로 움직임을 기술할 수 있기 때문이다. (이 그림에서는 변위를 x로 표시하고 중력이 없다고 가정.) 이와 같이 3차원 이동(translation), 회전(rotation), 크기(scale)를 모두 변경할 …

자동차와 연식

중고차 시세를 결정하는 요인 중에서 연식이 가장 큰 비중을 차지함. 중고차의 가격은 연식을 기준으로 책정되기 때문. 차량의 연식은 등록 시점을 기준으로 정해짐. 따라서, 만약 2019년 12월에 계약했지만 2020년 1월에 출고와 등록이 이루어지면 이 차량의 연식은 2020년이 됨. 같은 차량이지만 연식이 2019년인 차량과 2020년인 차량의 중고차 시세는 팔 때와 살 때 모두 차이가 발생함. 따라서, 특별한 …

거울은 왜 좌우만 바뀌어 보일까?

거울을 통해 우리의 모습을 보면 왼쪽과 오른쪽이 뒤집혀서 반대로 보입니다. 우리가 오른손을 들면 거울 속의 나는 왼손을 들고, 우리가 왼손을 들면 거울 속의 나는 오른손을 드는 것으로 보입니다. 즉, 거울 속에 비치는 모습은 왼쪽과 오른쪽이 뒤집힌 대칭이동의 결과로 나타납니다. 그런데, 조금 더 생각해보면 이상한 점이 하나 있습니다. 왜 위쪽과 아래쪽은 뒤집혀서 보이지 않을까요? 거울이 상하좌우를 …

“(음수) × (음수) = (양수)”가 되는 이유

첫째 딸에게 수학을 가르치면서 당연하게 생각했던 사실들에 대해 왜 그런지 이유를 생각하게 되는 경우가 많다. 오늘 받은 질문은 “두 음수 끼리의 곱은 왜 양수가 되는가?”이다. 생각해보니 이것에 대해서 심각하게 고민을 해본 적이 없었던 것 같다. 그저 당연한 사실로 받아들였던 것 같다. 다만, −는 부호가 반대로 뒤집히는 것을 의미하기 때문에 −의 −는 부호가 두 번 뒤집히면서 …

Closed Form

닫힌 형태(closed form)란 방정식(equation)의 해(solution)를 해석적(analytic)으로 표현할 수 있는 종류의 문제를 말한다. 즉, 닫힌 형태를 가지는 방정식의 해는 변수(variable), 상수(constant), 사칙연산( +−×÷), 그리고 잘 알려진 기본 함수(삼각함수, 로그함수, 제곱근 등) 등을 조합해서 “해 = …” 꼴로 표현될 수 있다. 대표적인 닫힌 형태 해(closed form solution)의 예로는 2차 방정식의 근의 공식을 들 수 있다. 닫힌 형태(closed …

SIGGRAPH Asia 2019 Brisbane

올해 SIGGRAPH Asia는 호주 브리즈번에서 열린다. 2년 전쯤에 개최지를 알게 되었을 때 여기는 반드시 가야 한다고 다짐을 했던 기억이 난다. 결국 꿈은 이루어졌고 나는 지금 브리즈번에서 이 글을 쓰고 있다. 올해 초, 테마파크 영상 제작을 위해 개발하여 사용한 내용을 정리하여 SIGGRAPH 2019 Los Angeles의 Talks에 제출을 했었다. 두 번째 SIGGRAPH Talks 도전 결과는 아쉽게도 탈락. …

대왕 무지개

태풍 링링이 오기 전 폭풍전야.동쪽 하늘에 뜬 엄청 굵은 무지개.여지껏 봤던 무지개 중에서 가장 굵다.다른 무지개가 오징어 다리 느낌이라면..이 무지개는 대왕오징어 다리를 보는듯한 느낌이다. 이 무지개를 보면서 처음 알게된 사실은..편광 필터를 통해서 보면 무지개만 사라진다.왜 그럴까?무지개는 빛의 굴절과 반사로 인해 생기는 자연현상이라서…

키노트에서 그린 그림을 출판용 EPS 파일로 만드는 방법

1. EPS 파일을 만들려면 Adobe Illustrator가 필요합니다. 따라서, 우선 Adobe 계정을 만들고 Illustrator를 설치합니다. (이용 요금: 24,000원/월, 처음 7일은 무료) ※ 무료 online converter를 사용하는 방법도 있습니다. 하지만, 여기서는 Illustrator를 사용하는 방법을 설명합니다. 2. 출판용 이미지 해상도는 보통 4000×3000를 사용합니다. 따라서, 이 크기로 키노트 슬라이드 크기를 변경해줍니다. 그리고, 슬라이드에 꽉 차도록 그림을 스케일링합니다. (여기서 선 …

su와 sudo su의 차이

sudo su 는 root 계정으로 바꾸기는 하지만 1. root 계정의 환경변수를 가져오지 않는다. 2. root의 암호를 물어보지 않는다. (현재 계정의 암호를 물어본다.) 둘 다 현재 경로를 변경하지는 않는다.

우분투(Ubuntu) PyCharm 설치

1. Google에서 pycharm을 검색 2. Download 클릭 3. ~/Downloads/pycharm-community-2019.2.tar.gz 파일 확인 (2019.08.21 기준 최신 버전) & 압축 해제 tar xvfz pycharm-community-2019.2.tar.gz 4. bin 디렉토리로 이동 및 실행 cd pycharm-community-2019.2/bin/ ./pycharm.sh 5. pycharm 실행 종료 6. pycharm-community 디렉토리를 적당한 곳으로 이동 7. 심볼릭 링크(symbolic link) 생성 (root 계정 필요) ln -s /home/wanhochoi/pycharm-community-2019.2/bin/pycharm.sh /usr/bin 8. 이제 어느 …

SIGGRAPH 2019 Los Angeles

올해 SIGGRAPH가 열리는 곳은 또 LA다. (SIGGRAPH는 주로 벤쿠버나 로스앤젤레스에서 개최된다.) 여러 번 가봐서 새로움이 덜한 곳이긴 하지만, 그래도 이것이 SIGGRAPH에 안갈 이유까지 되지는 않는다. 막상 출발 시점이 다가오니 올해에는 또 어떤 놀라운 결과들이 소개될지.. 여전히 설레이는 것은 어쩔 수 없다. 2017년 Talks 발표에 이어 올해 SIGGRAPH에서 두 번째 발표를 도전했었지만 아쉽게도 목표를 이루지는 못했다. …

여름 휴가

이제 아이들이 많이 커서 남쪽 끝에 있는 거제도로 자동차 여행을 시도할 수 있었다. 긴 이동 시간에도 군말없이 잘 버텨준 아이들이 대견스럽다. 일본에만 폭우를 뿌리며 좀처럼 북상하지 않던 장마전선이 여지없이 우리 가족 여름 휴가에 맞춰서 올라온다는 일기예보를 듣고는 많이 걱정했다. 다행스럽게도 이튿날에만 살짝 비를 뿌려서 별 지장 없이 2박 3일의 일정을 잘 보내고 왔다. 일기예보상으로는 첫 …

OpenCV Python Binding Problem

Ubuntu version: 18.04.2Python version: 3.6g++ version: 7.3.0clang version: 6.0.0swig version: 3.0.12OpenCV version: 4.0.0 [C++ code] class Image { private: cv::Mat mat; public: Image() {} }; The following errors occur when importing my module after binding the above code. [Compiled by g++ with Pybind11] Segmentation fault (core dumped) [Compiled by g++ with SWIG] Traceback (most recent …

z-buffer fighting problem

서로 다른 두 개의 면이 너무 가깝게 존재하게 되면 다음과 같은 문제가 발생할 수 있다. 해결 방법 1) 눈에 크게 안 띌 정도로 조금 떨어지게 만든다. 해결 방법 2) zNear와 zFar 값이 차이를 줄인다. 해결 방법 3) 24비트 또는 32비트 정밀도의 depth buffer를 사용한다. (기본값: 16비트) 단, 이 방법은 그래픽 카드가 지원할 때 가능하다.

MFnNurbsCurve Update Problem

Maya nHair simulation의 결과로 나온 NURBS curve들의 control vertex position을 MFnNurbsCurve::getCVs() 함수를 사용하여 querying할 때 Maya가 죽거나 정확한 위치값을 가져오지 못하는 문제가 발생한다. 멀티쓰레딩과 관련된 문제로 보이며 다음과 같이 Evaluation mode 설정에서 Parallel을 DG로 변경하면 임시방편적으로 문제를 해결할 수 있다.