정보과학 × 융합탐구 × 3D 시뮬레이션

Web VPython 분야별 해석 예시코드 50선

수학·물리학·생명과학·지구과학·화학·천문학·공학·인문학·의학·철학의 탐구주제를 Web VPython으로 모델링하고 시각적으로 해석하는 수업용 자료입니다.

10개 분야분야별 5개총 50개 코드브라우저 실행

활용 방법

① 분야와 탐구주제를 선택하고 ② 코드의 변수·초기조건을 바꿔 실행한 뒤 ③ 결과의 변화 원인을 해당 교과 개념으로 설명하고 ④ 정보과학 관점에서 모델의 가정·반복 구조·자료 표현·시각화 방식을 평가합니다.

Web VPython 실행: Web VPython 새 프로그램에 코드 전체를 붙여넣어 실행합니다. 첫 줄의 Web VPython 3.2도 함께 사용합니다.
∑

수학

융합탐구 Web VPython 예시 5개
수학 · 예시 1

3차원 나선곡선과 매개변수 변화

해석 포인트 · 매개변수 방정식을 3차원 좌표로 바꾸고, 계수 변화에 따른 곡선의 형태를 비교한다.

Web VPython 3.2
scene.background = color.black
scene.range = 6
curve(color=color.cyan, radius=0.03)
c = curve(color=color.cyan, radius=0.03)
for i in range(600):
    t = i*0.03
    p = vector(3*cos(t), 3*sin(t), 0.08*t)
    c.append(pos=p)
수학 · 예시 2

리사주 곡선의 3차원 확장

해석 포인트 · 서로 다른 진동수 비가 닫힌 곡선의 모양에 어떤 영향을 주는지 관찰한다.

Web VPython 3.2
scene.background = color.black
scene.range = 4
c = curve(color=color.yellow, radius=0.025)
for i in range(1200):
    t = i*0.01
    x = 3*sin(3*t)
    y = 3*sin(4*t)
    z = 1.5*sin(5*t)
    c.append(pos=vector(x,y,z))
수학 · 예시 3

벡터 내적과 두 벡터 사이의 각

해석 포인트 · 두 벡터를 화살표로 나타내고 내적과 각도를 수치로 확인한다.

Web VPython 3.2
scene.background = color.white
a = vector(4,1,0)
b = vector(2,3,0)
arrow(pos=vector(0,0,0), axis=a, color=color.red)
arrow(pos=vector(0,0,0), axis=b, color=color.blue)
theta = acos(dot(a,b)/(mag(a)*mag(b)))
label(pos=vector(0,-1,0), text="angle = "+str(round(degrees(theta),2))+" deg",
      color=color.black, box=False)
수학 · 예시 4

프랙탈 나무의 재귀 깊이 비교

해석 포인트 · 재귀 깊이에 따라 가지 수와 화면 복잡도가 어떻게 증가하는지 비교한다.

Web VPython 3.2
scene.background = color.black
scene.range = 8
def branch(p, v, depth):
    if depth == 0: return
    cylinder(pos=p, axis=v, radius=0.05*depth, color=color.green)
    q = p + v
    branch(q, rotate(v*0.72, angle=0.45, axis=vector(0,0,1)), depth-1)
    branch(q, rotate(v*0.72, angle=-0.45, axis=vector(0,0,1)), depth-1)
branch(vector(0,-6,0), vector(0,3,0), 6)
수학 · 예시 5

함수 그래프와 접선의 기하적 의미

해석 포인트 · 곡선 위 한 점의 수치미분으로 접선 방향을 만들어 미분의 의미를 시각화한다.

Web VPython 3.2
scene.background = color.white
scene.range = 5
g = curve(color=color.blue, radius=0.02)
for i in range(-200,201):
    x=i/40
    y=0.2*x*x
    g.append(pos=vector(x,y,0))
x0=2
y0=0.2*x0*x0
m=0.4*x0
curve(pos=[vector(x0-2,y0-2*m,0), vector(x0+2,y0+2*m,0)],
      color=color.red, radius=0.025)
⚛

물리학

융합탐구 Web VPython 예시 5개
물리학 · 예시 1

포물선 운동

해석 포인트 · 중력가속도 아래에서 위치와 속도를 시간에 따라 갱신하고 궤적을 추적한다.

Web VPython 3.2
scene.background = color.black
ground=box(pos=vector(0,-0.1,0), size=vector(20,0.2,8), color=color.green)
ball=sphere(pos=vector(-8,0.3,0), radius=0.3, color=color.yellow, make_trail=True)
ball.v=vector(8,9,0)
g=vector(0,-9.8,0)
dt=0.01
while ball.pos.y >= 0:
    rate(100)
    ball.v += g*dt
    ball.pos += ball.v*dt
물리학 · 예시 2

단진자 운동

해석 포인트 · 중력에 의해 진동하는 추의 운동을 수치적으로 계산한다.

Web VPython 3.2
scene.background=color.black
L=4
theta=0.8
omega=0
g=9.8
dt=0.01
pivot=vector(0,3,0)
bob=sphere(radius=0.3,color=color.yellow)
rod=cylinder(pos=pivot,radius=0.05,color=color.white)
while True:
    rate(100)
    alpha=-(g/L)*sin(theta)
    omega += alpha*dt
    theta += omega*dt
    bob.pos=pivot+vector(L*sin(theta),-L*cos(theta),0)
    rod.axis=bob.pos-pivot
물리학 · 예시 3

탄성 충돌

해석 포인트 · 운동량과 운동에너지 보존을 두 구의 충돌 전후 속도로 비교한다.

Web VPython 3.2
scene.background=color.black
a=sphere(pos=vector(-4,0,0),radius=0.5,color=color.red,make_trail=True)
b=sphere(pos=vector(4,0,0),radius=0.5,color=color.blue,make_trail=True)
a.v=vector(2,0,0); b.v=vector(-1,0,0)
dt=0.01
while True:
    rate(100)
    a.pos+=a.v*dt; b.pos+=b.v*dt
    if mag(a.pos-b.pos) <= 1 and dot(a.v-b.v,a.pos-b.pos) < 0:
        a.v,b.v=b.v,a.v
물리학 · 예시 4

감쇠 진동

해석 포인트 · 마찰 항이 있을 때 진폭이 감소하는 과정을 스프링-질량계로 관찰한다.

Web VPython 3.2
scene.background=color.black
m=1; k=4; c=0.35; dt=0.01
x=3; v=0
mass=box(pos=vector(x,0,0),size=vector(0.8,0.8,0.8),color=color.orange)
spring=helix(pos=vector(-4,0,0),axis=mass.pos-vector(-4,0,0),radius=0.35)
while True:
    rate(100)
    a=(-k*x-c*v)/m
    v+=a*dt; x+=v*dt
    mass.pos.x=x
    spring.axis=mass.pos-vector(-4,0,0)
물리학 · 예시 5

파동 전파

해석 포인트 · 여러 점의 위상을 달리하여 횡파의 진행을 애니메이션으로 나타낸다.

Web VPython 3.2
scene.background=color.black
N=60
pts=[sphere(pos=vector(i*0.2-6,0,0),radius=0.06,color=color.cyan) for i in range(N)]
t=0
while True:
    rate(60)
    t+=0.05
    for i,p in enumerate(pts):
        x=i*0.2-6
        p.pos=vector(x, sin(2*x-3*t), 0)
🧬

생명과학

융합탐구 Web VPython 예시 5개
생명과학 · 예시 1

개체군 로지스틱 성장

해석 포인트 · 환경수용력 K가 개체 수 변화에 미치는 영향을 시간축으로 시각화한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Logistic Growth", xtitle="time", ytitle="population")
f=gcurve(color=color.green)
N=10; r=0.8; K=100; dt=0.05; t=0
while t<15:
    rate(100)
    N += r*N*(1-N/K)*dt
    f.plot(t,N)
    t+=dt
생명과학 · 예시 2

DNA 이중나선 모형

해석 포인트 · 두 가닥의 위상차와 염기쌍 연결을 3차원 구조로 표현한다.

Web VPython 3.2
scene.background=color.black
scene.range=6
for i in range(120):
    t=i*0.18
    p1=vector(2*cos(t),0.12*i-6,2*sin(t))
    p2=vector(2*cos(t+pi),0.12*i-6,2*sin(t+pi))
    sphere(pos=p1,radius=0.08,color=color.red)
    sphere(pos=p2,radius=0.08,color=color.blue)
    if i%6==0:
        cylinder(pos=p1,axis=p2-p1,radius=0.025,color=color.white)
생명과학 · 예시 3

먹이사슬 네트워크

해석 포인트 · 생물종을 노드로, 먹이 관계를 연결선으로 나타내 그래프 구조를 해석한다.

Web VPython 3.2
scene.background=color.white
A=sphere(pos=vector(-3,0,0),radius=0.5,color=color.green)
B=sphere(pos=vector(0,2,0),radius=0.5,color=color.orange)
C=sphere(pos=vector(3,0,0),radius=0.5,color=color.red)
for p,name in [(A,"Plant"),(B,"Rabbit"),(C,"Fox")]:
    label(pos=p.pos+vector(0,0.8,0),text=name,box=False,color=color.black)
arrow(pos=A.pos,axis=B.pos-A.pos,color=color.black,shaftwidth=0.08)
arrow(pos=B.pos,axis=C.pos-B.pos,color=color.black,shaftwidth=0.08)
생명과학 · 예시 4

심장 박동 파형

해석 포인트 · 주기적 신호와 잡음을 더해 생체 신호의 특징을 단순 모델로 관찰한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Heartbeat Model",xtitle="time",ytitle="signal")
c=gcurve(color=color.red)
t=0
while t<20:
    rate(120)
    y=0.25*sin(2*pi*1.2*t)
    if (t%0.83)<0.06: y+=1.2
    c.plot(t,y)
    t+=0.01
생명과학 · 예시 5

신경 신호 전달

해석 포인트 · 뉴런 축삭을 따라 신호가 이동하는 과정을 이동 구체로 단순화한다.

Web VPython 3.2
scene.background=color.black
axon=cylinder(pos=vector(-6,0,0),axis=vector(12,0,0),radius=0.12,color=color.white)
signal=sphere(pos=vector(-6,0,0),radius=0.3,color=color.yellow,make_trail=True)
while True:
    rate(60)
    signal.pos.x += 0.08
    if signal.pos.x>6: signal.pos.x=-6
🌍

지구과학

융합탐구 Web VPython 예시 5개
지구과학 · 예시 1

지진파 P파와 S파 도달시간 비교

해석 포인트 · 서로 다른 전파 속도를 이용해 두 파의 도달시간 차이를 애니메이션으로 확인한다.

Web VPython 3.2
scene.background=color.black
source=sphere(pos=vector(-6,0,0),radius=0.3,color=color.red)
station=box(pos=vector(6,0,0),size=vector(0.4,1,1),color=color.white)
P=sphere(pos=source.pos,radius=0.18,color=color.yellow)
S=sphere(pos=source.pos,radius=0.18,color=color.cyan)
vp=5.5; vs=3.2; dt=0.01
while P.pos.x<6 or S.pos.x<6:
    rate(100)
    if P.pos.x<6: P.pos.x+=vp*dt
    if S.pos.x<6: S.pos.x+=vs*dt
지구과학 · 예시 2

행성 내부 층 구조

해석 포인트 · 지각·맨틀·핵을 서로 다른 반지름의 구로 나타내 내부 구조를 3차원으로 이해한다.

Web VPython 3.2
scene.background=color.black
sphere(radius=3,color=color.blue,opacity=0.25)
sphere(radius=2.5,color=color.orange,opacity=0.35)
sphere(radius=1.4,color=color.red,opacity=0.55)
sphere(radius=0.7,color=color.yellow)
label(pos=vector(0,3.6,0),text="Earth Layers",box=False,color=color.white)
지구과학 · 예시 3

판의 발산 경계

해석 포인트 · 두 판이 반대 방향으로 이동하면서 중앙에서 새로운 지각이 형성되는 과정을 단순화한다.

Web VPython 3.2
scene.background=color.black
left=box(pos=vector(-2,0,0),size=vector(4,0.5,5),color=color.blue)
right=box(pos=vector(2,0,0),size=vector(4,0.5,5),color=color.blue)
magma=box(pos=vector(0,-0.5,0),size=vector(0.6,1,5),color=color.red)
while True:
    rate(60)
    if left.pos.x>-5: left.pos.x-=0.01
    if right.pos.x<5: right.pos.x+=0.01
지구과학 · 예시 4

대기압의 고도 변화

해석 포인트 · 지수적으로 감소하는 대기압을 그래프로 그려 모델의 변화를 확인한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Pressure vs Altitude",xtitle="Altitude(km)",ytitle="Pressure(relative)")
f=gcurve(color=color.blue)
for i in range(201):
    h=i*0.05
    P=exp(-h/8.5)
    f.plot(h,P)
지구과학 · 예시 5

하천 분기 구조

해석 포인트 · 재귀 분기를 이용해 자연의 하천망과 자기유사 구조를 시각화한다.

Web VPython 3.2
scene.background=color.white
scene.range=7
def river(p,v,d):
    if d==0: return
    cylinder(pos=p,axis=v,radius=0.03*d,color=color.blue)
    q=p+v
    river(q,rotate(v*0.72,angle=0.38,axis=vector(0,0,1)),d-1)
    river(q,rotate(v*0.72,angle=-0.52,axis=vector(0,0,1)),d-1)
river(vector(0,-5,0),vector(0,2.4,0),6)
⚗

화학

융합탐구 Web VPython 예시 5개
화학 · 예시 1

기체 분자의 무작위 운동

해석 포인트 · 상자 안에서 입자가 충돌하며 움직이는 모습을 통해 기체 운동론을 해석한다.

Web VPython 3.2
scene.background=color.black
L=5
box(pos=vector(0,0,0),size=vector(2*L,2*L,2*L),opacity=0.15)
atoms=[]
for i in range(25):
    s=sphere(pos=vector(random()*6-3,random()*6-3,random()*6-3),radius=0.12,color=color.cyan)
    s.v=vector(random()-0.5,random()-0.5,random()-0.5)*4
    atoms.append(s)
dt=0.01
while True:
    rate(100)
    for s in atoms:
        s.pos+=s.v*dt
        for k in range(3):
            if abs(s.pos[k])>L: s.v[k]*=-1
화학 · 예시 2

방사성 붕괴

해석 포인트 · 반감기에 따른 원자 수의 지수 감소를 그래프로 나타낸다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Radioactive Decay",xtitle="time",ytitle="N")
c=gcurve(color=color.red)
N0=1000; half=3
for i in range(301):
    t=i*0.05
    N=N0*(0.5)**(t/half)
    c.plot(t,N)
화학 · 예시 3

반응속도와 농도 감소

해석 포인트 · 1차 반응의 농도 변화를 시간에 따라 수치 적분한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="First-order Reaction",xtitle="time",ytitle="Concentration")
c=gcurve(color=color.green)
A=1.0; k=0.35; dt=0.02; t=0
while t<15:
    rate(100)
    A += (-k*A)*dt
    c.plot(t,A)
    t+=dt
화학 · 예시 4

분자 진동 모형

해석 포인트 · 두 원자를 스프링으로 연결하여 결합 길이의 진동을 단순 모델링한다.

Web VPython 3.2
scene.background=color.black
a=sphere(pos=vector(-1,0,0),radius=0.5,color=color.red)
b=sphere(pos=vector(1,0,0),radius=0.5,color=color.blue)
bond=helix(pos=a.pos,axis=b.pos-a.pos,radius=0.18)
t=0
while True:
    rate(60)
    t+=0.05
    x=1+0.3*sin(3*t)
    a.pos.x=-x; b.pos.x=x
    bond.pos=a.pos; bond.axis=b.pos-a.pos
화학 · 예시 5

결정 격자

해석 포인트 · 규칙적인 3차원 격자에 원자를 배치하여 결정 구조의 반복성을 관찰한다.

Web VPython 3.2
scene.background=color.black
scene.range=5
for x in range(-2,3):
    for y in range(-2,3):
        for z in range(-2,3):
            sphere(pos=vector(x,y,z),radius=0.13,color=color.cyan)
✦

천문학

융합탐구 Web VPython 예시 5개
천문학 · 예시 1

태양-지구-달 운동

해석 포인트 · 지구 공전과 달의 공전을 동시에 갱신하여 계층적 궤도 운동을 관찰한다.

Web VPython 3.2
scene.background = color.black
scene.range = 10
sun=sphere(pos=vector(0,0,0),radius=1,color=color.yellow)
earth=sphere(radius=0.4,color=color.blue,make_trail=True)
moon=sphere(radius=0.15,color=color.white,make_trail=True)
t=0
while True:
    rate(60)
    t+=0.02
    earth.pos=vector(6*cos(t),0,6*sin(t))
    moon.pos=earth.pos+vector(1.2*cos(6*t),0,1.2*sin(6*t))
천문학 · 예시 2

타원 궤도와 케플러 운동

해석 포인트 · 타원 궤도를 따라 행성이 움직이는 단순 모델을 만들고 장반경·단반경의 영향을 비교한다.

Web VPython 3.2
scene.background=color.black
scene.range=8
sun=sphere(pos=vector(-1.5,0,0),radius=0.6,color=color.yellow)
planet=sphere(radius=0.25,color=color.cyan,make_trail=True)
a=6; b=4; t=0
while True:
    rate(60)
    t+=0.015
    planet.pos=vector(a*cos(t),0,b*sin(t))
천문학 · 예시 3

쌍성계 공전

해석 포인트 · 두 별이 공통 질량중심 주위를 도는 모습을 통해 질량비와 궤도 반경 관계를 해석한다.

Web VPython 3.2
scene.background=color.black
A=sphere(radius=0.55,color=color.red,make_trail=True)
B=sphere(radius=0.35,color=color.blue,make_trail=True)
t=0
while True:
    rate(60)
    t+=0.02
    A.pos=vector(2*cos(t),0,2*sin(t))
    B.pos=vector(-4*cos(t),0,-4*sin(t))
천문학 · 예시 4

은하 회전 모형

해석 포인트 · 여러 별을 서로 다른 반경에 배치하고 각속도를 달리해 은하 회전을 단순화한다.

Web VPython 3.2
scene.background=color.black
stars=[]
for i in range(80):
    r=1+5*random()
    a=2*pi*random()
    s=sphere(pos=vector(r*cos(a),0,r*sin(a)),radius=0.05,color=color.white)
    stars.append([s,r,a])
while True:
    rate(60)
    for item in stars:
        s,r,a=item
        a+=0.01/sqrt(r)
        item[2]=a
        s.pos=vector(r*cos(a),0,r*sin(a))
천문학 · 예시 5

태양계 크기 비교

해석 포인트 · 행성 반지름을 축척해 나열하면서 크기 차이를 시각적으로 비교한다.

Web VPython 3.2
scene.background=color.black
names=["Mercury","Venus","Earth","Mars","Jupiter"]
r=[0.19,0.47,0.5,0.27,2.0]
x=-6
for name,rr in zip(names,r):
    sphere(pos=vector(x,0,0),radius=rr,color=color.cyan)
    label(pos=vector(x,-2.6,0),text=name,box=False,color=color.white)
    x+=3
⚙

공학

융합탐구 Web VPython 예시 5개
공학 · 예시 1

PID 제어 개념 시뮬레이션

해석 포인트 · 목표 위치와 현재 위치의 오차를 이용해 P·I·D 제어의 역할을 관찰한다.

Web VPython 3.2
scene.background=color.white
target=4
x=0; v=0; e_old=0; integ=0
kp=2.0; ki=0.15; kd=0.8; dt=0.01
cart=box(pos=vector(x,0,0),size=vector(0.8,0.5,0.5),color=color.blue)
while True:
    rate(100)
    e=target-x
    integ+=e*dt
    deriv=(e-e_old)/dt
    u=kp*e+ki*integ+kd*deriv
    v+=u*dt
    x+=v*dt
    cart.pos.x=x
    e_old=e
공학 · 예시 2

로봇 팔 2관절

해석 포인트 · 두 관절의 회전각을 변화시키며 끝점 위치가 어떻게 달라지는지 관찰한다.

Web VPython 3.2
scene.background=color.black
L1=3; L2=2
j1=cylinder(radius=0.12,color=color.orange)
j2=cylinder(radius=0.1,color=color.cyan)
t=0
while True:
    rate(60); t+=0.03
    a=sin(t); b=1.2*sin(1.5*t)
    p1=vector(L1*cos(a),L1*sin(a),0)
    p2=p1+vector(L2*cos(a+b),L2*sin(a+b),0)
    j1.pos=vector(0,0,0); j1.axis=p1
    j2.pos=p1; j2.axis=p2-p1
공학 · 예시 3

교량 하중 분산

해석 포인트 · 여러 지점에 작용하는 힘 벡터를 화살표로 표현하여 구조물 하중을 시각화한다.

Web VPython 3.2
scene.background=color.white
bridge=box(pos=vector(0,0,0),size=vector(10,0.4,2),color=color.gray(0.7))
for x in [-4,-2,0,2,4]:
    arrow(pos=vector(x,2,0),axis=vector(0,-1.5,0),color=color.red,shaftwidth=0.12)
box(pos=vector(-4,-1,0),size=vector(0.8,2,2),color=color.blue)
box(pos=vector(4,-1,0),size=vector(0.8,2,2),color=color.blue)
공학 · 예시 4

드론 고도 제어

해석 포인트 · 목표 고도를 향해 올라가고 감쇠하는 단순 피드백 제어를 구현한다.

Web VPython 3.2
scene.background=color.black
drone=box(pos=vector(0,0,0),size=vector(1,0.2,1),color=color.cyan)
target=5; v=0; dt=0.01
while True:
    rate(100)
    error=target-drone.pos.y
    a=1.8*error-1.2*v
    v+=a*dt
    drone.pos.y+=v*dt
공학 · 예시 5

프랙탈 안테나

해석 포인트 · 재귀적 선분 배치를 이용해 자기유사 안테나 형상을 3차원 공간에 생성한다.

Web VPython 3.2
scene.background=color.black
def antenna(p,v,d):
    if d==0: return
    cylinder(pos=p,axis=v,radius=0.035*d,color=color.yellow)
    q=p+v
    antenna(q,rotate(v*0.7,angle=pi/3,axis=vector(0,0,1)),d-1)
    antenna(q,rotate(v*0.7,angle=-pi/3,axis=vector(0,0,1)),d-1)
antenna(vector(0,-4,0),vector(0,2.2,0),6)
文

인문학

융합탐구 Web VPython 예시 5개
인문학 · 예시 1

단어 빈도 막대 시각화

해석 포인트 · 텍스트 분석 결과를 3차원 막대로 나타내어 디지털 인문학의 데이터 표현을 체험한다.

Web VPython 3.2
scene.background=color.white
words=["AI","data","ethics","human"]
count=[8,5,7,4]
for i in range(len(words)):
    box(pos=vector(i*2-3,count[i]/2,0),size=vector(1,count[i],1),color=color.blue)
    label(pos=vector(i*2-3,-0.7,0),text=words[i],box=False,color=color.black)
인문학 · 예시 2

서사 분기 트리

해석 포인트 · 이야기의 선택지를 트리 형태로 표현해 분기 구조와 탐색 개념을 연결한다.

Web VPython 3.2
scene.background=color.white
nodes=[vector(0,3,0),vector(-2,1,0),vector(2,1,0),
       vector(-3,-1,0),vector(-1,-1,0),vector(1,-1,0),vector(3,-1,0)]
for p in nodes: sphere(pos=p,radius=0.25,color=color.orange)
for a,b in [(0,1),(0,2),(1,3),(1,4),(2,5),(2,6)]:
    cylinder(pos=nodes[a],axis=nodes[b]-nodes[a],radius=0.04,color=color.black)
인문학 · 예시 3

왕조 계보 시각화

해석 포인트 · 계층적 역사 자료를 트리 구조로 나타내 관계 중심의 해석을 시도한다.

Web VPython 3.2
scene.background=color.white
levels=[[vector(0,3,0)],[vector(-2,1,0),vector(2,1,0)],
        [vector(-3,-1,0),vector(-1,-1,0),vector(1,-1,0),vector(3,-1,0)]]
for row in levels:
    for p in row: sphere(pos=p,radius=0.22,color=color.cyan)
인문학 · 예시 4

철학 개념 관계망과 인문학 텍스트의 연결

해석 포인트 · 핵심 개념을 노드, 관련성을 간선으로 나타내 개념지도를 공간화한다.

Web VPython 3.2
scene.background=color.black
P=[vector(0,2,0),vector(-2,0,0),vector(2,0,0),vector(0,-2,0)]
N=["Reason","Freedom","Ethics","Knowledge"]
for p,n in zip(P,N):
    sphere(pos=p,radius=0.3,color=color.yellow)
    label(pos=p+vector(0,0.6,0),text=n,box=False,color=color.white)
for a,b in [(0,1),(0,2),(1,3),(2,3)]:
    cylinder(pos=P[a],axis=P[b]-P[a],radius=0.035,color=color.white)
인문학 · 예시 5

시의 반복 리듬 시각화

해석 포인트 · 문장의 음절 또는 강세 패턴을 높이 변화로 나타내 반복 구조를 시각적으로 분석한다.

Web VPython 3.2
scene.background=color.white
pattern=[1,3,2,4,2,3,1,4]
for i,h in enumerate(pattern):
    cylinder(pos=vector(i-4,0,0),axis=vector(0,h,0),radius=0.12,color=color.magenta)
✚

의학

융합탐구 Web VPython 예시 5개
의학 · 예시 1

약물 농도 감소

해석 포인트 · 반감기 모델을 이용해 체내 약물 농도의 시간 변화를 시각화한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Drug Concentration",xtitle="time",ytitle="C")
c=gcurve(color=color.blue)
C0=100; half=4
for i in range(401):
    t=i*0.05
    C=C0*(0.5)**(t/half)
    c.plot(t,C)
의학 · 예시 2

심박수 이상 탐지

해석 포인트 · 정상 범위를 벗어난 값을 다른 색의 점으로 표시하여 조건 판정 과정을 시각화한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Heart Rate",xtitle="time",ytitle="bpm")
normal=gdots(color=color.blue,radius=3)
abnormal=gdots(color=color.red,radius=5)
data=[72,75,78,74,110,76,73,48,77,80]
for i,v in enumerate(data):
    if 55<=v<=100: normal.plot(i,v)
    else: abnormal.plot(i,v)
의학 · 예시 3

체온 변화 시뮬레이션

해석 포인트 · 체온이 목표값으로 회복되는 과정을 단순한 완화 모델로 표현한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="Body Temperature",xtitle="time",ytitle="C")
c=gcurve(color=color.red)
T=39.5; normal=36.5; dt=0.05; t=0
while t<20:
    T += -0.18*(T-normal)*dt
    c.plot(t,T)
    t+=dt
의학 · 예시 4

혈류 속도 프로파일

해석 포인트 · 혈관 단면에서 중심이 빠르고 벽면이 느린 포물선 속도 분포를 나타낸다.

Web VPython 3.2
scene.background=color.black
R=3
for i in range(-30,31):
    r=i/10
    if abs(r)<=R:
        v=1-(r/R)**2
        arrow(pos=vector(r,0,0),axis=vector(0,2*v,0),color=color.red,shaftwidth=0.04)
의학 · 예시 5

전염병 확산 SIR 단순 모델

해석 포인트 · 감염 가능자·감염자·회복자의 시간 변화를 세 곡선으로 비교한다.

Web VPython 3.2
scene.background=color.white
g=graph(title="SIR Model",xtitle="time",ytitle="ratio")
s1=gcurve(color=color.blue); s2=gcurve(color=color.red); s3=gcurve(color=color.green)
S=0.99; I=0.01; R=0; beta=0.6; gamma=0.18; dt=0.02; t=0
while t<40:
    dS=-beta*S*I; dI=beta*S*I-gamma*I; dR=gamma*I
    S+=dS*dt; I+=dI*dt; R+=dR*dt
    s1.plot(t,S); s2.plot(t,I); s3.plot(t,R)
    t+=dt
Φ

철학

융합탐구 Web VPython 예시 5개
철학 · 예시 1

결정론적 규칙과 무작위성 비교

해석 포인트 · 같은 초기값과 규칙을 갖는 운동과 무작위 운동을 나란히 두어 결정성과 우연성을 비교한다.

Web VPython 3.2
scene.background=color.black
a=sphere(pos=vector(-4,0,0),radius=0.25,color=color.cyan,make_trail=True)
b=sphere(pos=vector(4,0,0),radius=0.25,color=color.yellow,make_trail=True)
t=0
while True:
    rate(60); t+=0.03
    a.pos=vector(-4+2*cos(t),2*sin(t),0)
    b.pos += vector((random()-0.5)*0.15,(random()-0.5)*0.15,0)
철학 · 예시 2

무한 반복과 종료 조건

해석 포인트 · 종료 조건이 있는 반복과 없는 반복의 차이를 시각적 상태 변화로 이해한다.

Web VPython 3.2
scene.background=color.white
ball=sphere(pos=vector(-5,0,0),radius=0.3,color=color.blue)
while ball.pos.x < 5:
    rate(60)
    ball.pos.x += 0.05
label(pos=vector(0,-1,0),text="Stopped by condition",box=False,color=color.black)
철학 · 예시 3

자기참조와 재귀 구조

해석 포인트 · 재귀적으로 작은 구조가 다시 같은 형태를 만드는 자기참조적 패턴을 관찰한다.

Web VPython 3.2
scene.background=color.black
def self_ref(p,s,d):
    if d==0:return
    box(pos=p,size=vector(s,s,s),opacity=0.25,color=color.cyan)
    self_ref(p+vector(s*0.6,s*0.6,0),s*0.55,d-1)
self_ref(vector(-2,-2,0),3,7)
철학 · 예시 4

선택과 분기

해석 포인트 · 각 단계의 선택이 다른 경로를 만드는 의사결정 트리를 공간적으로 표현한다.

Web VPython 3.2
scene.background=color.white
root=vector(0,3,0)
children=[vector(-2,1,0),vector(2,1,0)]
sphere(pos=root,radius=0.3,color=color.orange)
for p in children:
    sphere(pos=p,radius=0.3,color=color.cyan)
    arrow(pos=root,axis=p-root,color=color.black,shaftwidth=0.05)
철학 · 예시 5

규칙 기반 세계의 예측 가능성

해석 포인트 · 단순한 운동 규칙에서 초기조건 변화가 결과 경로를 어떻게 바꾸는지 비교한다.

Web VPython 3.2
scene.background=color.black
balls=[]
for i,vx in enumerate([1.0,1.02,1.04]):
    b=sphere(pos=vector(-5,i-1,0),radius=0.18,color=color.cyan,make_trail=True)
    b.v=vector(vx,0.6+0.02*i,0)
    balls.append(b)
dt=0.02
while True:
    rate(60)
    for b in balls:
        b.pos+=b.v*dt
        b.v.y-=0.3*dt