← 실계산 조각
Wave equation on a grid · 55,296셀 · 라이브러리 0

물결은 서로를 통과한다

클릭한 곳마다 물방울이 떨어지고, 물결끼리는 부딪히지 않고 더해진 채 서로를 통과합니다. 벽을 그리면 반사되고, 틈을 만나면 돌아 나갑니다. 그리고 버튼 하나로, 물리학에서 가장 유명한 실험인 이중 슬릿 간섭을 이 물 표면에서 직접 재현할 수 있습니다.

클릭·드래그 = 물방울

파동 파라미터

이중 슬릿을 켜면 왼쪽에서 평면파가 계속 밀려와 두 틈을 지나며 줄무늬(간섭 무늬)를 만듭니다. 틈 하나를 벽 그리기로 막아 보세요. 무늬가 사라집니다. 전자와 빛도 정확히 이 무늬를 만듭니다.

풀고 있는 방정식

∂²h/∂t² = ∇²h  2차원 파동 방정식 · leapfrog 적분 · 가장자리는 스펀지 감쇠(무한 수면 흉내)
h(x,t) = h₁ + h₂  중첩 원리. 물결이 겹치는 곳에서 높이는 그냥 더해진다. 보강되면 밝게, 상쇄되면 잔잔하게.

물결의 문법 · 4가지

① 서로를 통과한다 — 위 화면의 그 갱신식을 1차원으로 돌린 것 h 다음 = 2h − h 이전 + c²·lap

점선은 각각 혼자 보냈을 때, 실선은 둘을 같이 보냈을 때입니다. ①③에서는 점선이 실선 위에 정확히 얹혀 보이지 않습니다 — 혼자 갈 때와 똑같다는 뜻입니다. ②에서만 실선이 두 점선의 높이를 더한 만큼 솟습니다 — 부딪힌 흔적이 남지 않습니다. 손으로 그린 그림이 아니라 위 식을 그대로 돌린 결과입니다.

RULE 1

전파

각 칸은 이웃과의 높이차(라플라시안)만큼 가속됩니다. 이 지역 규칙 하나가 동심원으로 퍼지는 물결을 만듭니다.

lap = h[좌]+h[우]+h[상]+h[하] - 4h[i]
h틈[i] = 2h[i] - h이전[i] + c²·lap
// leapfrog: 과거·현재로 미래를 만든다
RULE 2

중첩

물결 두 개가 만나도 서로를 밀치지 않습니다. 높이가 더해질 뿐이고, 지나간 뒤엔 각자 갈 길을 갑니다. 물방울 여러 개를 겹쳐 떨어뜨려 보세요.

// 규칙 추가 없음.
// 선형 방정식이라 중첩은 공짜다.
RULE 3

반사와 회절

벽(h=0 고정)에 닿은 물결은 뒤집혀 돌아옵니다. 틈을 지난 물결은 틈을 새 파원 삼아 다시 동심원으로 퍼집니다. 하위헌스의 원리입니다.

if (wall[i]) h[i] = 0
// 경계조건 하나로 반사·회절이
// 전부 따라 나온다
RULE 4

간섭

두 틈에서 나온 물결이 겹치며, 경로차가 반파장이면 상쇄되고 한 파장이면 보강됩니다. 그 결과가 부챗살 줄무늬입니다. 1801년 영(Young)이 빛으로 이걸 보여 파동설을 증명했습니다.

경로차 = |d₁ − d₂|
보강: 경로차 = nλ
상쇄: 경로차 = (n+½)λ

같은 물결을 옆에서 보면

위 판이 매 프레임 푸는 높이 h(x,y) 를 그대로 세운 것입니다 — 새로 계산한 게 하나도 없습니다. 위에서 물방울을 떨어뜨리거나 벽을 그리거나 이중 슬릿을 켜면, 여기 수면도 같이 움직입니다. 끌면 돌아갑니다.

끌어서 돌리기
진짜 물결은 파장에 비해 아주 낮습니다. 그대로 세우면 거의 평평해 보여서 높이만 과장해 놓았습니다 — 가로세로 위치와 마루·골의 자리는 계산값 그대로입니다. 손잡이를 왼쪽 끝으로 내리면 실제에 가까운 납작함이 됩니다.

물결을 면으로 본다

위 판은 물결을 옆에서 자른 선으로 보여 줍니다. 실제 수면은 이고, 파동 방정식은 그 면 위에서 풀립니다. 아래는 같은 방정식을 격자 위에서 매 프레임 푼 것입니다.

물결을 면으로 본다끌어서 회전 · 휠로 확대 · 손 떼면 다시 돈다
마루두 곳에서 낸 물결이 만나면 겹쳐서 더해집니다 — 높은 곳끼리 만나면 더 높아지고, 마루와 골이 만나면 서로 지웁니다.

돌려 보면 간섭 무늬가 면 위에 줄무늬로 남는 것이 보입니다. 위 판의 선 그림에서 오르내리던 것이, 면에서는 격자 모양으로 나타납니다.

격자는 눈으로 보기 위해 성기게 잡았습니다. 값은 매 프레임 이웃 격자와의 차이로 갱신합니다.

실물은 이렇게 생겼다

위 화면은 격자 한 칸의 높이를 이웃과 비교해 밀어 주는 규칙 한 줄만 돌린 것입니다. 진짜 바다에서도 같은 일이 벌어집니다.

프랑스 일 드 레 섬의 등대 위에서 내려다본 바다. 방향이 다른 너울 두 줄이 겹치며 수면 전체가 바둑판 격자 무늬로 보인다. 아래쪽에 등대 탑과 모래사장이 있다.

① 두 물결이 서로를 통과한 자리

프랑스 대서양 연안 일 드 레 섬, ‘고래 등대’ 꼭대기에서 내려다본 바다입니다. 수면이 바둑판 격자로 보입니다.

파도가 줄을 맞춰 선 게 아닙니다. 방향이 다른 너울 두 줄이 같은 물 위를 동시에 지나가는 중입니다. 마루끼리 만난 자리는 높아지고, 마루와 골이 만난 자리는 평평해집니다. 그 높낮이가 규칙적으로 놓이면서 격자가 됩니다.

위 판의 RULE 2 중첩이 하는 일이 정확히 이것입니다. h = h₁ + h₂ — 규칙을 새로 넣은 게 아니라, 방정식이 선형이라 공짜로 따라 나오는 성질입니다. 화면에서 물방울을 두 군데 떨어뜨리면 같은 격자가 생깁니다.

다른 건 크기뿐입니다. 화면은 288×192 = 55,296칸이고, 여기는 바다 몇 km입니다. 그리고 겹친 자리를 벗어나면 두 너울은 각자 원래 방향으로 그대로 갑니다 — 섞이지 않습니다. 대신 그 위에 뜬 배는 두 방향에서 동시에 얻어맞는 셈이라, 선원에게는 까다로운 바다입니다.

사진 Michel Griffon · CC BY 3.0 · 위키미디어 커먼즈
독일 북해 방게로게 섬 해변을 위에서 내려다본 사진. 왼쪽에서 바다로 뻗은 돌제방이 있고, 곧게 밀려오던 파도 줄이 제방 끝을 지나며 휘어 제방 뒤쪽으로 돌아 들어간다.

② 벽 끝을 돌아 들어간다

독일 북해의 방게로게 섬입니다. 모래가 쓸려 나가는 걸 막으려고 바다 쪽으로 돌제방(Buhne)을 하나 뻗어 놓았습니다. 사진 왼쪽의 검은 띠입니다.

먼 바다에서는 물결이 곧은 줄로 밀려옵니다. 그런데 제방 끝을 지나는 순간 줄이 휘어, 제방 뒤 그늘 쪽으로 돌아 들어갑니다. 벽이 물결을 막아 세운 게 아니라, 벽 끝이 새로운 출발점이 된 것입니다.

위 판에서 벽 그리기로 벽을 세우고 가운데를 틔워 보세요. 같은 일이 일어납니다. 틈이 새 파원이 되어 동심원으로 다시 퍼집니다 — RULE 3에 적힌 하위헌스의 원리이고, 코드에서는 wall[i]이면 h[i]=0 이 한 줄이 전부입니다.

다만 진짜 바닷가는 화면보다 복잡합니다. 여기서 보이는 휘어짐에는 구조물 끝을 돌아 드는 회절과, 물이 얕아질수록 물결이 느려져서 생기는 굴절이 겹쳐 있습니다. 화면은 수심이 일정하다고 놓고 풀기 때문에 회절만 나옵니다. 더 단순한 쪽이 화면입니다.

사진 Rhetos · CC0 · 위키미디어 커먼즈
이 화면은 이 네 종목 이야기입니다● 시세 불러오는 중

기준일을 100으로 놓고 그린 선입니다. 통화가 서로 달라 지수로 겹쳤습니다.

같은 기술의 서로 다른 칸입니다. 주가가 이 기술 때문이라고는 말하지 않습니다.