전체 글

전체 글

    3D 변환

    3D 변환

    3D Transform 앞선 글에서는 2차원, 그러니 좌표평면에서 물체에 대해 tranlation, scaling, rotation을 하는 방법을 알아봤어요. 이번에는 이 내용들을 3차원에서 사용할 수 있도록 확장할 거예요. 전반적인 내용은 달라지지 않지만 조금 더 복잡해지는 내용들이 있을 거예요! 2차원에서 시작하기 2차원에서 한 점의 좌표는 2개의 수로 표현되며, 이것을 행렬을 이용해서 표현할 때 1행 3열 행렬을 사용했어요. 그럼 공간에서는 3개의 수가 하나의 점을 지정하므로 1행 4열 행렬을 이용하면 되겠지요. $\begin{pmatrix}x&y&z&1\end{pmatrix}$ 4번째 열의 값은 변환 행렬을 곱할 때 효과가 제대로 적용되기 위한 수로 고정하고 나머지 $x$, $y$, $z$에 점의..

    2D 변환 - WebGL

    2D 변환 - WebGL

    2D Transform 앞선 글에서 WebGL을 사용하여 도형을 그리는 방법을 알아봤어요. 이제 이 도형을 필요에 따라 변형하는 방법을 알아볼 거예요. 변형(Transform)은 다음과 같이 3가지가 있어요. Translation (평행이동) Scaling (크기 조정) Rotation (회전) 이번에는 코드를 먼저 전부 올릴게요. 더보기 WebGL 주요 수정사항은 다음과 같아요. 도형을 삼각형에서 F로 바꾸었어요. 삼각형은 간단한 도형이기 때문에 첫 번째 예제로는 적합하지만 회전했을 때 구분하기 힘들기 때문에 어느 방향에서 봐도 모양이 다른 F를 사용할 거예요. position 배열을 바꿈으로써 수정했지요. 도형의 색을 검은색으로 바꾸었어요. 가시성을 위해서이지요. 평면을 입력시에 0,0 ~ 800,6..

    WebGL의 기본

    WebGL의 기본

    WebGL WebGL 하면 보통 멋있는 3D 엔진, 뭔가 멋진 결과물을 만들 수 있는 마법의 프로그램이라 생각하는 경우가 있어요. 그럴 법도 하죠. 웹브라우저에서 3D로 뭔가를 하면 WebGL로 구현되어 있는 경우가 대부분이니까요. 우선 WebGL로 만들어진 몇 가지 프로그램을 소개할게요. 멋있죠. 하지만 사실 WebGL은 웹에서 3D 작업을 마법처럼 처리해주는 도구는 아니에요. 대신 래스터라이제이션(Rasterization) 도구에 가깝지요. WebGL에 도형(Geometry)을 입력으로 넣어주면 그것을 평면에 그린 이미지를 그리는 게 WebGL의 역할이에요. 그래서 앞으로 WebGL을 하면서 다룰 내용은 아마 여러분이 생각하는 화려한 무언가와는 좀 거리가 있을 수도 있어요. Vertex shader,..

    전기에너지의 본질은 무엇일까?

    전기에너지의 본질은 무엇일까?

    전지와 전구를 준비하고 이들을 도선으로 연결하면 전구에 불이 켜져요. 진지로 전구의 불을 키는 것은 전지에 저장된 화학적 에너지가 전구라는 장치를 통해 빛 에너지와 열에너지로 변환되는 것으로 생각할 수 있어요. 그리고 많은 사람들은 전류를 흐르게 하는 전자가 이 에너지를 전달한다고 생각합니다. 과연 이 설명이 맞을까요? 일반적으로 우리는 전기회로에서 "전기"라는 것을 전달하는건 전자라고 생각하죠. 이는 전압, 전류, 저항과 같은 존재로 전기회로를 설명하기 때문이에요. 하지만 이는 어디까지나 추상화된 개념일 뿐 근본적인 해석은 아니에요. 사실 전기회로를 해석하는데 있어서 전자보다 훨씬 중요한 것은 장(Field)입니다. 전기에너지는 전자를 통해 전달될까요? 전구나 LED, 전열기등이 어떻게 전기에너지를 다..

    면역계(Immune System)

    면역계(Immune System)

    면역 면역이란 신체에 침입하여 손상을 입힐 수 있는 요소에 대응하여 이들을 제거하고 대응하는 능력이에요. 발달된 면역계를 가진 개체는 자신을 해칠 수 있는 물질의 침입과 공격을 방어하여 그렇지 않은 개체들에 비해 생존에 유리하게 되었고, 이는 생명이 면역계를 진화시키게 하였죠. 면역계에서 항원(antigen, Ag)은 면역반응을 발생시키는 물질이에요. 이들은 대부분 생명에 독성을 가지고 있으며 세균, 바이러스, 화학물질, 암세포가 포함되지만 독성이 없는 물질이나 심지어는 신체의 일부도 항원으로 인식되기도 하지요. 예를 들어 알레르기는 식품, 먼지, 꽃가루 등 독성이 없거나 미미한 물질에 대하여 신체가 격렬한 면역반응을 일으켜 발생되는 질환이에요. 알레르기를 일으킬 수 있는 화학물질은 매우 매우 다양하지요..

    상대적이고 절대적인 것 [상대성 이론]

    상대적이고 절대적인 것 [상대성 이론]

    상대성 이론 상대성 이론은 역사상 가장 위대한 물리학자로 알려진 Albert Einstein이 쓴 논문에서 처음 알려져 시간과 공간에 대한 기존의 인식을 완전히 바꾼, 그야말로 가장 혁신적인 이론이에요. Einstein은 기존의 절대적인 시간의 개념을 부정하고 사고 실험을 통해 시간과 공간이 관측자에 대해 어떻게 상대적으로 변하는지 설명하였죠. 이번 글에서는 상대성 이론, 그중에서도 특수 상대성 이론의 가장 기본적인 아이디어와 그로부터 유도되는 시간 지연, 길이 수축에 대해 알아봐요. 물리법칙이 성립하는 곳 지표면에 관측자 예지가 서있다고 해볼게요. 예지가 공을 지면에 수직 하게 던져 올리면 공은 일정한 힘을 받아 Issac Newton의 이론에 따라 등가속도 운동 법칙에 의해 위로 올라갔다가 아래로 떨..

    구의 부피를 어떻게 구할까?

    구의 부피를 어떻게 구할까?

    중학교 1학년에서는 다음과 같이 구의 부피와 겉넓이를 구하는 방법을 배워요. 반지름이 $r$인 구에 대해 그것의 부피는 $\frac{4}{3}\pi r^3$이며, 겉넓이는 $4\pi r^2$이다. 교과서에서는 이것에 대한 수학적 증명 대신 물을 이용해 실험적으로 부피를 구하여 이것이 공식의 값과 매우 근사함을 보여요. 하지만 이런 증명은 전혀 수학적이지 않지요. 이번에는 중학교 수준에서 구의 부피와 겉넓이를 구하는 방법을 알아볼 거예요. 핵심 아이디어. 카발리에리의 원리 두 평행선 $l$과 $m$이 있고 두 꼭짓점은 $l$ 위에, 다른 한 꼭짓점은 $m$ 위에 있는 삼각형 $\triangle \mathrm{ABC}$를 생각해봐요. 이제 직선 $l$, $m$은 가만히 두고 $\mathrm{A}$를 움직여봐..

    SSMT PRIME 1차

    SSMT PRIME 1차

    Science School Mock Test PRIME 1 시험지 —— 안내 —— 위 문제는 영재학교 입학시험의 스타일에 따라 제가 직접 출제한 문제입니다. 총 2문제, 각 문제에는 3개의 소문제가 있습니다. 시험지는 문제지 4 페이지, 답안지 2페이지, 연습지로 이루어져 있습니다. 시험시간은 100분입니다. 모든 시험지는 A4 크기입니다. 인쇄시에는 양면인쇄합니다. —— 응시 유의사항 —— 서술형 답안지는 흑색 연필 또는 흑색 볼펜으로 작성합니다. 답안 수정은 지우개 사용 또는 두 줄 긋고 답안을 작성합니다. 답안지에 불필요한 표시를 하지 마세요. 연습지는 1장 주어지나 필요한 경우 더 요청할 수 있습니다. 연습지에 작성한 내용은 채점하지 않습니다. 문제지, 답안지, 연습지의 모든 성명과 수험번호 란에..

    연속방정식과 베르누이 방정식

    연속방정식과 베르누이 방정식

    흐르는 물체의 운동을 분석하기 액체나 기체와 같이 흐르는 물체인 유체의 운동을 분석하는 것은 난해해요. 유체는 밀도, 점성, 압축 등에 의해 운동이 매우 복잡해질 수 있고 그것을 일일이 모두 고려해서 운동을 분석하기는 힘들죠. 예를 들어 물과 꿀은 둘 다 액체이지만 점도가 다르기 때문에 다른 성질을 지니게 돼요. 일반적인 유체의 운동을 표현한 식으로 나비에-스토스크 방정식이 있는데 이 방정식은 정확한 풀이법도 알려져 있지 않을 정도로 난해합니다. 이번 글에서는 그러한 복잡한 유체 대신 "이상 유체"라는 특수한 유체를 다룰 것이에요. 이상적인 유체. "이상 유체" 이상유체는 분석을 쉽게 하기 위해 다음 사실을 가정해요 유체는 비압축성이다(압축되지 않는다). 기체의 경우 압력을 가하면 부피가 줄어들어요. 이..

    Softmax Regression Classification

    Softmax Regression Classification

    Softmax Classificaition의 필요성? 이전 글에서 입력 데이터를 2개의 부류로 나누는 방법인 Logistic Classification을 다뤘어요. 이 방법은 이분적인 데이터를 처리하는데 유용하지만 만약 데이터가 셋 중 하나, 혹은 넷, 다섯 중 하나라면 Logistic Classification을 바로 쓰기는 어려워요. 그래서 이것을 확장한 분류 방법, Softmax Classification을 알아봐요. 여러 개로 "분류"하기 한번 3가지로 나누어질 수 있는 데이터를 생각해봐요. 예를 들어 성적을 A, B, C로 나누는 학교를 생각해요. 즉, class는 A, B, C가 되는 거예요. 그리고 공부시간에 따른 성적을 정리해보면 다음과 같을 것이에요. 공부시간이 많아질 수록 A에 가까워지..

    교란순열(완전순열)

    교란순열(완전순열)

    문제 예지반은 매주 저번 주에 배운 내용을 테스트하는 시험을 본다. 시험을 본 후 10명의 학생들은 각자 시험지를 채점하는데, 채점자는 누구여도 좋으나 스스로의 시험지는 채점할 수 없다. 이때 시험지를 채점자에게 나누어주는 경우의 수는 몇 가지일까? 문제 이해 $n$명의 사람들에게 작성된 $n$개의 편지를 무작위로 나누어줬을 때 누구도 자신에게 작성된 편지를 받지 못하는 경우의 수를 교란 순열(또는 완전 순열)이라고 해요. 가령 $n=3$인 경우 다음과 같이 2가지 경우가 있어요. 편지 A B C 받은 사람 b c a 편지 A B C 받은 사람 c a b 이런 개념 자체는 중학교 2학년에도 나오지만 이때는 $n$이 커봐야 3에서 4 정도로 직접 그 경우의 수를 세도 무리가 없을 정도로 계산량이 크지 않아..

    로지스틱 회귀를 사용한 분류(Logistic regression classification)

    로지스틱 회귀를 사용한 분류(Logistic regression classification)

    분류(Classification)는 어떠한 데이터를 기준에 따라 적당한 그룹으로 정하는 것이에요. 말은 거창하지만 쉽게 말해서 어떤 사진이 고양이인지/개인지, 어떤 점수를 바탕으로 A등급이 예상되는지 B 등급이 예상되는지 정하는 것이에요. 이번 글에서는 데이터를 2개의 선택지 중 하나로 분류하는 방법에 대해 다룰 거예요. 우선 데이터를 실수로 표현하기 위하여 첫 번째 선택지를 0, 두번째 선택지를 1로 정하고 각 데이터를 0이상 1이하의 실수로 나타낼께요. 예를 들어 어떤 데이터가 0.01이라는 것은 첫번째 선택지에 가깝다는 거예요. 만약 데이터가 어떠한 기점을 중심으로 선택지가 갈린다면 다음 그래프와 같이 데이터를 나타낼 수 있겠죠. 우리의 목표는 어떠한 점을 기준으로 데이터의 분류가 갈리는지 알아내서..

    컴퓨터를 자동으로 꺼주는 프로그램을 만들기 위하여

    컴퓨터를 자동으로 꺼주는 프로그램을 만들기 위하여

    필요 인식 제가 하루 중 가장 많이 사용하는 기계는 컴퓨터예요. 아무것도 안 하고 켜놓는 시간까지 포함하면 하루에 4시간은 켜놓죠. 그런데 이렇게 사용하면서 문제가 발생했어요. 바로 컴퓨터 전원 관리가 힘들어진 것이죠. 전원을 켜는 것은 필요할 때 켜면 되는 것이니 어려울 것 없는데 끄는 것은 깜빡 잊고 켜놓은 상태로 외출하면 영락없이 에너지 낭비로 이어지죠. 그래서 개인용 PC에 원격으로 전원을 끄는 시스템을 구축하기 위해 연구해 보았어요. 아이디어 1. Remote Desktop 사용하기 가장 먼저 떠오른 아이디어에요. 실제로 이미 내 PC에는 Remote Desktop 시스템이 구축되어 있고, 외부망에서 접속할 수 있으니 딱히 건들건 없어요. Pros: 별도의 시스템 구축이나 설정이 필요 없다 :)..

    선형회귀(Linear Regression)

    선형회귀(Linear Regression)

    현실의 많은 것은 양의 상관관계를 가지고 있다. 가령 공부를 많이 하면 시험 점수가 올라가고, 밥을 많이 먹을수록 몸무게가 증가한다. 이러한 것들을 분석하기 위한 모델이 선형 회귀(Linear Regression)이다. 선형회귀분석은 데이터의 입력(X)과 출력(Y)이 선형적인 관계를 가질 것으로 예측한다. 가령 하나의 입력을 받아 하나의 출력을 만드는 데이터는 다음과 같은 관계를 생각할 수 있다. $Y=WX+b$ 일차함수 모양이다. 우리는 이러한 관계를 Hypothesis(가설)이라고 하여 함수 $H(X)$로 표현한다. 즉, 하나의 입력이 있는 선형 회귀의 Hypothesis는 다음과 같다. $H(X)=WX+b$ 여기서 $X$는 입력 데이터, $W$는 웨이트(weight), $b$는 바이어스(bias)이..

    인공지능 - 머신러닝의 개념

    인공지능 - 머신러닝의 개념

    머신러닝은 왜 필요할까? 머신러닝 이전에는 우린 explicit programming이라 하여 가능한 모든 경우에 대해 대응하는 코드를 작성해서 프로그램을 개발했다. 하지만 프로그램의 요구가 더욱 고도화되면서 모든 경우를 대응하는 것이 불가능해졌다. 예를 들어 대화하는 프로그램을 만든다고 하자. 가능한 모든 발화에 대해서 대답을 정해줘야 하나? 또 이전의 대화에 따라 무한히 많아지는 대화의 경우의 수를 일일이 신경 써줘야 하나? 불가능하다. 그래서 머신러닝은 모든 규칙을 신경 쓰는 대신 수많은 데이터를 보고, 데이터들이 가지는 경향성을 분석하여 결과를 예측한다. 그리고 머신러닝에서 데이터를 보고 경향성을 파악하는 작업을 "학습"이라고 한다. 머신러닝이 학습하는 방식의 종류는 Supervised Learn..

    원자력 발전을 줄이는 것은 절대 정답이 될 수 없습니다.

    원자력 발전을 줄이는 것은 절대 정답이 될 수 없습니다.

    몇몇 사람들을 보면 인류의 안전과 환경을 위하여 원자력 발전을 당장 그만둬야 한다고 주장하는 사람들이 있다. 특히 후쿠시마 원자력 발전소 이후로 국내외로 급격이 원자력 발전에 대한 여론이 나빠져 급기야 기존에 예정된 원자력 발전소의 건설을 취소해야 되는 것이 아니냐며 소송이 벌어지기도 했다. 나는 이러한 여론에 매우 우려를 표하며 우리는 원자력 발전을 계속해야 함을 강력히 주장하고 싶다. 우선 우리가 원자력 발전소를 매우 많이 사용하고 있음을 알아두자. 2020년 우리나라가 원자력 발전으로 생산한 전기는 총 160 TWh 정도로 전체의 29.0%를 차지하고 있다. 화력발전(62.4%)에 이어 2번째이다[1]. 따라서 원자력 발전을 중단하게 되면 전기 생산량이 매우 줄어들 수밖에 없다. 만약 우리가 전기 ..

    중복조합

    중복조합

    중복조합이란 중복을 허용해서 조합하는 것이다. 일반적인 조합(${}_n\mathrm{C}_r$)은 중복을 허용하지 않는다. 가령 A, B, C 중 2개를 고를 때 AB나 BC만 가능하여 AA를 고를 수는 없다. 하지만 중복조합은 이미 고른 것을 또 고르는 것이 가능하다. A, B, C를 중복조합으로 조합하면 다음과 같이 여섯 가지 경우가 있다. AA, AB, AC, BB, BC, CC 중복조합은 다음과 같이 표기한다. $n$개중 $r$개를 중복을 허용하여 뽑는 경우의 수는 ${}_n\mathrm{H}_r$이다. 중복조합은 조합으로 바꾸어 계산하며 바꾸는 방법은 다음과 같다. ${}_n\mathrm{H}_r={}_{n+r-1}\mathrm{C}_r$ 이것이 성립하는 이유는 다음과 같다. 가령 4개의 공을 ..

    FTP 서버 구축

    FTP 서버 구축

    오늘날 개인 수준에서는 굳이 서버를 마련해서 FTP 서버를 구축할 필요는 없지만 나의 경우에는 다음과 같은 이유로 FTP 서버 구축을 결심했다. 서버와 파일 공유를 쉽게 하기 위해서 서버 프로그램 배포를 자동화하려고 개인용 클라우드로 사용하려고 서버랑 파일공유를 쉽게 한다는 것이 이해가 되지 않을 수도 있는데, 서버는 오직 명령어로만 사용 가능하기 때문에 카카오톡이나 Google Drive 등 일상에서 파일 공유에 사용하는 방법이 전혀 통하지 않는다. 또 서버 프로그램을 자동화한다는 것은 GitHub 등에 커밋을 하면 자동으로 소스를 빌드하고, 결과물을 서버 컴퓨터로 전송해서 적용하는 시스템을 구축하는 것이다. 그래서 FTP 서버를 구축하고자 한다. 우선 Ubuntu 기반의 서버를 하나 마련하고, 거기에..

    전기 - 유도자(인덕터)

    전기 - 유도자(인덕터)

    전류가 흐르는 도선 주위에는 자기장이 생긴다. 우리가 일반적으로 전기회로를 분석할 때는 도선에 흐르는 전류가 만드는 자기장을 고려하지 않지만, 그리고 직류의 경우 분석할 필요도 없지만 교류회로의 경우 이 현상이 재미있는 현상을 만든다. 우리는 기본적으로 회로의 스위치를 내리는 순간 모든 지점에 전위차가 걸리고, 일시에 전류가 흐르기 시작한다고 가정하지만, 실제로는 그렇지 않다. 스위치를 내리면 도선의 전류가 증가하고→도선 근처에 점점 세지는 자기장이 유도되고→유도 기전력은 자기장의 증가를 막는 방향으로 유도되고→전류의 증가를 막는다. 이 현상은 전류가 흐르는 모든 도선에서 발생하지만, 일반적으로는 그 정도가 크지 않아 무시한다. 대신 이 효과가 최대로 발생하도록 설계한 전자부품이 있다. 인덕터(유도자, ..

    전기 - 축전기(커패시터)

    전기 - 축전기(커패시터)

    커패시터(Capacitors)는 두 극판을 가까이 두고 전기장을 형성하여 전하를 저장하는 부품이다. 실제로 보면 이렇게 생겼다. 커패시터는 일정한 거리를 둔 두 평행한 금속판으로 되어있다. 두 금속판에 전압을 걸어주면 전위차에 의해 전하들이 한 방향으로 쏠려서 이동하고, 각 금속판은 대전된다. 그러다 전지의 전위차와 커패시터의 전위차가 같아지면 전하의 이동은 중단되고 두 금속판은 +Q, -Q로 대전된다. 이러한 성절은 전기에너지를 모았다가 한 번에 방출하는, 예를 들어 점화플러그나 카메라 플래시에 사용된다. 커패시터의 성능은 전기용량으로 설명된다. 전기용량 $C$는 다음과 같이 정의된다. $C=\frac{Q}{\Delta V}$, 단위: F(패럿) 또는 C/V(쿨롱/볼트) $Q$는 커패시터에 저장된 전하..