TL;DR
- OpenAI 2026년 논문의 선도 스케일 법칙을 적용한 브라우저 시각화가 나비에–스토크스(Navier–Stokes) 소용돌이의 제안된 폭발 구성을 보여주며, 수치적 증명 재현이 아닌 일러스트레이션임.
- 반지름은 τ^(1/2), 높이는 τ^(1/2−h)로 축소되며, h = 0.005, τ = 1−t/T*를 사용해 반지름이 더 빠르게 줄어드는 구조임.
- WebGL 1, GLSL ES 1.0, 포인터 이벤트,
requestAnimationFrame,matchMedia를 이용해 궤도 회전·재생·스크러빙·코어 추적을 제공함. - 시각화는 960개 시드와 입자당 24개 샘플로 구성되며, 고정된 저불일치 시드와 해석적 히스토리 재생성으로 탐색 상태와 프레임 속도에 독립적인 트레일을 구성함.
- WebGL을 사용할 수 없거나 컨텍스트가 손실되면 안내 메시지를 표시하고,
prefers-reduced-motion환경에서는 첫 정지 화면을 유지함.
홈
- 항목이 28. Scientific visualization · 2026으로 분류됨.
스파게티 소용돌이
- 브라우저에서 소용돌이 구조를 확인하는 인터랙티브 시각화임.
Reset,Fullscreen기능으로 장면을 초기화하거나 전체 화면으로 전환함.- 드래그로 시점을 궤도 회전시키며, 첫 드래그 이후 자동 회전이 중단됨.
- 재생·일시 정지·접근 과정 스크러빙·코어 추적 기능을 제공함.
색상과 조절 항목
- 색상과 조절값 변경은 실행 중인 파일에 즉시 반영됨.
Copy HTML을 사용하면 현재 설정값이 반영된 HTML을 복사함.- 조절 항목은 다음과 같음.
Outer:#6ee7b7Core:#f2b45cTrail:0.35Playback:1RandomDefaults- 색상은 정규화된 반지름을 나타내며, 코어 색상에서 외곽 색상으로 이어지는 그레이디언트를 사용함.
설명
- 2026년 OpenAI 논문의 선도 법칙에 맞춰 크기를 조정한 매개변수형 나선(parametric helix)임.
- 반지름은
τ^(1/2), 높이는τ^(1/2−h)를 따르며,h = 0.005,τ = 1−t/T*를 예시값으로 사용함. - 두 값 모두 축소되지만 반지름이 더 빠르게 축소됨.
- 시점을 드래그해 회전하거나
T*방향으로 스크러빙할 수 있으며, 라벨이 붙은 균일 확대를 사용해 코어를 따라갈 수 있음. - 진동성 보정항(oscillatory correction)은 생략됨.
- 제안된 폭발 구성(blowup construction)을 설명하는 일러스트레이션이며, 증명의 수치적 재현은 아님.
브라우저 API
WebGL 1GLSL ES 1.0Pointer EventsrequestAnimationFramematchMedia- WebGL이 없으면 빈 프레임 대신 캔버스에 안내 메시지를 그림.
prefers-reduced-motion이 활성화되면 첫 정지 화면을 유지함.
소스
- HTML·CSS·JS·GLSL 소스별 복사 기능을 제공함.
- 시각화의 핵심 파라미터는 외곽 색상
#6ee7b7, 코어 색상#f2b45c, 트레일 불투명도0.35, 재생 속도1임. h = 0.005, 최대 접근 단계12, 입자 수960, 입자당 샘플 수24를 사용함.- 접근 변수
s에서τ = 10^(-s)를 계산하고, 다음 스케일을 적용함. - 방사 방향 스케일:
τ^0.5 - 축 방향 스케일:
τ^(0.5−h) - 속도 스케일:
τ^(-0.5−h) - 각 입자는 고정된 저불일치 시드로 초기화되며, 위상·각도·축 방향을 난수 상태 없이 결정함.
- 입자 위치는 안쪽으로 감기는 나선과 두 개의 축 방향 출구를 도식적으로 구성함.
- 재활용(recycling)은 시드 생성을 위한 도식적 장치임.
- 재활용 경계를 가로지르는 이력 구간은 생략됨.
- 각 위치 데이터에는 3차원 좌표, 정규화 반지름, 재활용 주기 식별자가 포함됨.
- 고정된 샘플 간격으로 제한된 월드 공간 히스토리 링을 구성하고, 스크러빙 때마다 위치를 해석적으로 재생성함.
- 히스토리는 재생 프레임 속도와 무관하게 유지되며, 재활용 경계가 다른 선분은 트레일에서 제외됨.
- 트레일 선분은 나이에 따라 투명도가 낮아지고, 현재 코어 지점은 더 높은 불투명도로 표시됨.
- 정점 셰이더는 모델·뷰·투영 행렬, 확대율, 점 크기를 적용함.
- 프래그먼트 셰이더는 코어와 외곽 색상을 정규화 반지름에 따라 보간하고 깊이와 트레일 값으로 알파를 조정함.
- 카메라는 원근 투영과 피치·요 회전을 사용하며, 고정 시점 또는 코어 추적 모드에서 렌더링함.
- 기준 축과 격자를 함께 그리며, 격자 간격과
1−t/T*값을 화면 라벨로 표시함. - 재생 중에는 접근 단계가 시간에 따라 증가하고 최대 단계에 도달하면 재생이 멈춤.
- 성능이 일정 시간 동안 낮으면 입자 수를 960개에서 480개로 줄이며, 기존 시드 값은 변경하지 않음.
Play버튼은 종료 지점에서 다시 시작할 수 있고, 슬라이더 입력은 재생을 멈춘 뒤 접근 단계를 직접 설정함.Reset은 접근 단계·카메라·입자 수·자동 회전·코어 추적 설정을 초기 상태로 되돌림.- 포인터 이벤트는 드래그 중 요와 피치를 조정하고 자동 회전을 중지함.
- 화면 가시성이 바뀌면 애니메이션 프레임을 취소하거나 다시 요청하며,
ResizeObserver로 장면 크기 변화에 대응함. - WebGL 초기화·셰이더 컴파일·프로그램 연결에 실패하면 컨트롤을 비활성화하고 오류 메시지를 표시함.
- WebGL 컨텍스트가 손실되면 렌더링을 중단하고 복구를 기다리며, 컨텍스트가 복원되면 프로그램과 버퍼를 다시 설정함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요