# data[].attributes.headline
우리는 어떤 모습으로 살아가고 있을까요?

# data[].attributes.body
우리는 어떤 모습으로 살아가고 있을까요?

태양계 밖에서 바라보는

우리의 살아가는 일상의 모습을

상상해보세요 ~

from vpython import canvas, sphere, vector, color, rate, cos, sin, pi

# 캔버스 생성

scene = canvas(title="Simplified Sun-Earth-Moon System",

width=800, height=600,

center=vector(0, 0, 0),

background=color.black)

# 천체 생성

sun = sphere(pos=vector(0, 0, 0), radius=0.2, color=color.yellow) # 태양

earth = sphere(pos=vector(1, 0, 0), radius=0.06, color=color.blue, make_trail=True) # 지구

moon = sphere(pos=vector(1.1, 0, 0), radius=0.02, color=color.gray(0.7), make_trail=True) # 달

# 궤도 설정

earth_orbit_radius = 1 # 지구의 태양 중심 궤도 반지름 (AU)

moon_orbit_radius = 0.1 # 달의 지구 중심 궤도 반지름 (AU)

earth_orbit_period = 10 # 지구의 공전 주기 (초 단위)

moon_orbit_period = 1 # 달의 공전 주기 (초 단위)

# 시간 변수

t = 0

dt = 0.01 # 시간 간격

# 시뮬레이션 루프

while True:

rate(100) # 초당 100 프레임

# 지구의 위치 업데이트 (태양 중심 궤도)

earth.pos = vector(

earth_orbit_radius cos(2 pi * t / earth_orbit_period),

earth_orbit_radius sin(2 pi * t / earth_orbit_period),

0

)

# 달의 위치 업데이트 (지구 중심 궤도)

moon.pos = vector(

earth.pos.x + moon_orbit_radius cos(2 pi * t / moon_orbit_period),

earth.pos.y + moon_orbit_radius sin(2 pi * t / moon_orbit_period),

0

)

# 시간 업데이트

t += dt

# data[].attributes.body
VPython에서 사용할 수 있는 기본 도형은 다양한 3D 그래픽 요소를 포함합니다. 이들은 간단하게 생성할 수 있으며, 서로 결합하여 복잡한 3D 장면을 만들 수 있습니다.

VPython 기본 도형 목록

1. box:

직육면체(박스) 모양.

속성: pos, size, color, axis, up 등.

python

코드 복사

b = box(pos=vector(0,0,0), size=vector(2,1,1), color=color.red)

2. sphere:

구 모양.

속성: pos, radius, color, opacity, shininess 등.

python

코드 복사

s = sphere(pos=vector(1,1,1), radius=0.5, color=color.blue)

3. cylinder:

원기둥 모양.

속성: pos, axis, radius, color, opacity 등.

python

코드 복사

c = cylinder(pos=vector(0,0,0), axis=vector(1,0,0), radius=0.2, color=color.green)

4. cone:

원뿔 모양.

속성: pos, axis, radius, color 등.

python

코드 복사

cn = cone(pos=vector(0,0,0), axis=vector(0,1,0), radius=0.5, color=color.yellow)

5. arrow:

화살표 모양.

속성: pos, axis, color, shaftwidth, headwidth 등.

python

코드 복사

a = arrow(pos=vector(0,0,0), axis=vector(1,1,0), color=color.orange)

6. pyramid:

사각뿔 모양.

속성: pos, size, axis, color 등.

python

코드 복사

p = pyramid(pos=vector(0,0,0), size=vector(1,1,1), color=color.purple)

7. ring:

고리 모양.

속성: pos, axis, radius, thickness, color 등.

python

코드 복사

r = ring(pos=vector(0,0,0), axis=vector(0,0,1), radius=1, thickness=0.1, color=color.cyan)

8. helix:

나선형 모양.

속성: pos, axis, radius, coils, thickness, color 등.

python

코드 복사

h = helix(pos=vector(0,0,0), axis=vector(1,0,0), radius=0.3, coils=10, thickness=0.05, color=color.magenta)

9. text:

3D 텍스트.

속성: text, align, height, color, depth 등.

python

코드 복사

t = text(text='Hello, VPython!', align='center', height=2, color=color.white)

10. curve:

연결된 선 또는 곡선.

속성: pos, radius, color 등.

python

코드 복사

crv = curve(pos=[vector(0,0,0), vector(1,1,1), vector(2,0,0)], color=color.green)

11. points:

점들의 집합.

속성: pos, size, color 등.

python

코드 복사

pts = points(pos=[vector(0,0,0), vector(1,1,1), vector(2,0,0)], size=5, color=color.red)

결합 및 사용 예제

VPython의 기본 도형들은 함께 조합하여 복잡한 구조를 만들 수 있습니다. 예를 들어, 원기둥과 구를 결합하여 아령 모양을 만들 수 있습니다.

python

코드 복사

# 아령 모양 cylinder(pos=vector(-1,0,0), axis=vector(2,0,0), radius=0.1, color=color.gray(0.5)) sphere(pos=vector(-1,0,0), radius=0.2, color=color.red) sphere(pos=vector(1,0,0), radius=0.2, color=color.blue)

참고

속성 변경: 도형의 속성은 생성 후에도 실시간으로 변경 가능합니다.

동적 애니메이션: 도형의 위치(pos), 크기(size), 축(axis) 등을 시간에 따라 변경하면 애니메이션 효과를 구현할 수 있습니다.

# data[].attributes.attachment_caption
사이클로이드 타원운동 원심력 구심력 구심력

# data[].attributes.body
Web VPython 3.2

from vpython import sphere, rate, vector, color, curve, canvas, cos, sin, sqrt

# 시뮬레이션 환경 설정

scene = canvas(title='구 A, B, C의 원운동 및 타원 궤도')

# 구 A 설정 (중심에 위치, 반지름 5)

rA = 5 # A의 반지름

ballA = sphere(radius=5, color=color.red) # 구 A

ballA.pos = vector(0, 0, 0) # 구 A의 위치

# 구 B 설정 (구 A를 중심으로 이심률 0.5인 타원 궤도를 원운동, 반지름 2)

rB = 20 # B의 궤도 반지름 (반장축 a)

e = 0.5 # 이심률

a = rB # 타원의 반장축 a

b = a sqrt(1 - e*2) # 타원의 단축 b = a * sqrt(1 - e^2)

ballB = sphere(radius=2, color=color.blue, make_trail=True) # 구 B

# 구 C 설정 (구 B를 중심으로 반지름 5인 궤도를 원운동, 반지름 1)

rC = 5 # C의 궤도 반지름

ballC = sphere(radius=1, color=color.green, make_trail=True) # 구 C

# 궤도 선

pathB = curve(color=color.orange) # 구 B의 궤도 선

pathC = curve(color=color.purple) # 구 C의 궤도 선

# 선분 (A-B 연결, B-C 연결)

line_AB = curve(color=color.cyan) # 구 A와 구 B를 연결하는 선

line_BC = curve(color=color.white) # 구 B와 구 C를 연결하는 선

# 접선을 나타내는 선

tangent_line = curve(color=color.yellow) # 구 C의 접선

# 공전 주기 설정

T_B = 12 # 구 B의 공전 주기 (단위: 시간)

T_C = 1 # 구 C의 공전 주기 (단위: 시간)

# 시간 변수 설정

t = 0 # 시간 변수

# 시뮬레이션 루프

while True:

rate(100) # 시뮬레이션 속도 조정 (초당 100번 실행)

# 구 B의 타원 궤도 (이심률 0.5, 반장축 a, 단축 b)

xB = a cos(t 2 * 3.14159 / T_B)

yB = b sin(t 2 * 3.14159 / T_B)

ballB.pos = vector(xB, yB, 0)

# 구 C의 원운동

xC = ballB.pos.x + rC cos(t 2 * 3.14159 / T_C)

yC = ballB.pos.y + rC sin(t 2 * 3.14159 / T_C)

ballC.pos = vector(xC, yC, 0)

# 구 C의 접선 벡터 계산 (속도 방향)

tx = -rC sin(t 2 * 3.14159 / T_C) # 접선 벡터의 x 성분

ty = rC cos(t 2 * 3.14159 / T_C) # 접선 벡터의 y 성분

# 구 C의 접선 선분 업데이트

tangent_line.clear()

tangent_line.append(pos=ballC.pos) # 접선의 시작점

tangent_line.append(pos=ballC.pos + vector(tx, ty, 0) * 3) # 접선 끝점 (길이 3배)

# 구 A와 구 B를 연결하는 선분 업데이트

line_AB.clear()

line_AB.append(pos=ballA.pos) # 시작점은 구 A의 중심

line_AB.append(pos=ballB.pos) # 끝점은 구 B의 중심

# 구 B와 구 C를 연결하는 선분 업데이트

line_BC.clear()

line_BC.append(pos=ballB.pos) # 시작점은 구 B의 중심

line_BC.append(pos=ballC.pos) # 끝점은 구 C의 중심

# 궤도를 선으로 그리기

pathB.append(pos=ballB.pos)

pathC.append(pos=ballC.pos)

# 시간 증가

t += 0.01

# data[].attributes.attachment_link.title
사이클로이드_타원운동_원심력_구심력_구심력.PNG

# data[].attributes.body
Web VPython 3.2

from vpython import sphere, rate, vector, color, curve, cos, sin

# 시뮬레이션 환경 설정

scene = canvas(title='구 A, B, C의 원운동')

# 구 A 설정 (중심에 위치, 반지름 5)

rA = 5 # A의 반지름

ballA = sphere(radius=5, color=color.red) # 구 A

ballA.pos = vector(0, 0, 0) # 구 A의 위치

# 구 B 설정 (구 A를 중심으로 반지름 20인 궤도를 원운동, 반지름 2)

rB = 20 # B의 궤도 반지름

ballB = sphere(radius=2, color=color.blue, make_trail=True) # 구 B

ballB_pos = vector(rB, 0, 0) # 구 B의 초기 위치

# 구 C 설정 (구 B를 중심으로 반지름 5인 궤도를 원운동, 반지름 1)

rC = 5 # C의 궤도 반지름

ballC = sphere(radius=1, color=color.green, make_trail=True) # 구 C

ballC_pos = vector(rB + rC, 0, 0) # 구 C의 초기 위치

# 구 B와 구 C의 궤도

pathB = curve(color=color.orange) # 구 B의 궤도 선

pathC = curve(color=color.purple) # 구 C의 궤도 선

# 공전 주기 설정

T_B = 12 # 구 B의 공전 주기 (단위: 시간)

T_C = 1 # 구 C의 공전 주기 (단위: 시간)

ratio = T_B / T_C # 구 B와 C의 공전주기 비율 (12:1)

# 시간 변수 설정

t = 0 # 시간 변수

# 시뮬레이션 루프

while True:

rate(100) # 시뮬레이션 속도 조정 (초당 100번 실행)

# 구 B의 원운동 (속도: 2π / T_B)

xB = rB cos(t 2 * 3.14159 / T_B)

yB = rB sin(t 2 * 3.14159 / T_B)

ballB.pos = vector(xB, yB, 0)

# 구 C의 원운동 (속도: 2π / T_C, 공전주기가 12:1이므로 t의 속도를 ratio 배로 조정)

xC = ballB.pos.x + rC cos(t 2 * 3.14159 / T_C)

yC = ballB.pos.y + rC sin(t 2 * 3.14159 / T_C)

ballC.pos = vector(xC, yC, 0)

# 구 B와 구 C의 궤도를 선으로 그리기

pathB.append(pos=ballB.pos)

pathC.append(pos=ballC.pos)

# 시간 증가 (t는 두 구의 공전 차이를 맞추기 위해 일정한 비율로 증가)

t += 0.01

# data[].attributes.attachment_link.title
사이클로이드_원운동.PNG

# data[].attributes.body
Web VPython 3.2

from vpython import sphere, rate, vector, color, curve, cos, sin, sqrt

# 시뮬레이션 환경 설정

scene = canvas(title='구 A, B, C의 원운동 및 타원 궤도')

# 구 A 설정 (중심에 위치, 반지름 5)

rA = 5 # A의 반지름

ballA = sphere(radius=5, color=color.red) # 구 A

ballA.pos = vector(0, 0, 0) # 구 A의 위치

# 구 B 설정 (구 A를 중심으로 이심률 0.5인 타원 궤도를 원운동, 반지름 2)

rB = 20 # B의 궤도 반지름 (반장축 a)

e = 0.5 # 이심률

a = rB # 타원의 반장축 a

b = a sqrt(1 - e*2) # 타원의 단축 b = a * sqrt(1 - e^2)

ballB = sphere(radius=2, color=color.blue, make_trail=True) # 구 B

ballB_pos = vector(rB, 0, 0) # 구 B의 초기 위치

# 구 C 설정 (구 B를 중심으로 반지름 5인 궤도를 원운동, 반지름 1)

rC = 5 # C의 궤도 반지름

ballC = sphere(radius=1, color=color.green, make_trail=True) # 구 C

ballC_pos = vector(rB + rC, 0, 0) # 구 C의 초기 위치

# 구 B와 구 C의 궤도

pathB = curve(color=color.orange) # 구 B의 궤도 선

pathC = curve(color=color.purple) # 구 C의 궤도 선

# 공전 주기 설정

T_B = 12 # 구 B의 공전 주기 (단위: 시간)

T_C = 1 # 구 C의 공전 주기 (단위: 시간)

ratio = T_B / T_C # 구 B와 C의 공전주기 비율 (12:1)

# 시간 변수 설정

t = 0 # 시간 변수

# 시뮬레이션 루프

while True:

rate(100) # 시뮬레이션 속도 조정 (초당 100번 실행)

# 구 B의 타원 궤도 (이심률 0.5, 반장축 a, 단축 b)

xB = a cos(t 2 * 3.14159 / T_B)

yB = b sin(t 2 * 3.14159 / T_B)

ballB.pos = vector(xB, yB, 0)

# 구 C의 원운동 (속도: 2π / T_C, 공전주기가 12:1이므로 t의 속도를 ratio 배로 조정)

xC = ballB.pos.x + rC cos(t 2 * 3.14159 / T_C)

yC = ballB.pos.y + rC sin(t 2 * 3.14159 / T_C)

ballC.pos = vector(xC, yC, 0)

# 구 B와 구 C의 궤도를 선으로 그리기

pathB.append(pos=ballB.pos)

pathC.append(pos=ballC.pos)

# 시간 증가 (t는 두 구의 공전 차이를 맞추기 위해 일정한 비율로 증가)

t += 0.01

# data[].attributes.attachment_link.title
사이클로이드_타원운동.PNG

# data[].attributes.attachment_link.title
태양지구달의 운동.PNG

# data[].attributes.body
from vpython import canvas, sphere, vector, color, rate, curve, cos, sin, pi

# 캔버스 생성

scene = canvas(title="Sun-Earth-Moon Cycloid Simulation",

width=800, height=600,

center=vector(0, 2, 0),

background=color.black)

# 파라미터 설정

sun_radius = 0.2 # 태양의 반지름

earth_orbit_radius = 3 # 지구의 궤도 반지름 (AU)

moon_orbit_radius = 0.5 # 달의 궤도 반지름 (AU)

earth_orbit_period = 10 # 지구의 공전 주기 (초)

moon_orbit_period = 1 # 달의 공전 주기 (초)

dt = 0.01 # 시간 간격

t = 0 # 초기 시간

# 천체 생성

sun = sphere(pos=vector(0, 0, 0), radius=sun_radius, color=color.yellow) # 태양

earth = sphere(pos=vector(earth_orbit_radius, 0, 0), radius=0.1, color=color.blue, make_trail=True) # 지구

moon = sphere(pos=earth.pos + vector(moon_orbit_radius, 0, 0), radius=0.05, color=color.gray(0.7), make_trail=True) # 달

cycloid_path = curve(color=color.red) # 달의 사이클로이드 경로

# 시뮬레이션 루프

while True:

rate(100) # 초당 100 프레임

# 지구의 위치 업데이트 (태양 중심 궤도)

earth_x = earth_orbit_radius cos(2 pi * t / earth_orbit_period)

earth_y = earth_orbit_radius sin(2 pi * t / earth_orbit_period)

earth.pos = vector(earth_x, earth_y, 0)

# 달의 위치 업데이트 (지구 중심 궤도)

moon_x = earth.pos.x + moon_orbit_radius cos(2 pi * t / moon_orbit_period)

moon_y = earth.pos.y + moon_orbit_radius sin(2 pi * t / moon_orbit_period)

moon.pos = vector(moon_x, moon_y, 0)

# 달의 사이클로이드 경로 업데이트

cycloid_path.append(pos=moon.pos)

# 시간 업데이트

t += dt

# data[].attributes.attachment_link.title
태양지구달의 운동 시뮬레이션.PNG

# data[].attributes.body
from vpython import canvas, sphere, vector, color, rate, curve, cos, sin, pi

# 캔버스 생성

scene = canvas(title="Elliptical Cycloid Simulation",

width=800, height=600,

center=vector(0, 2, 0),

background=color.black)

# 타원 파라미터

semi_major_axis = 5 # 타원의 반장축 (a)

eccentricity = 0.8 # 이심률 (e)

semi_minor_axis = semi_major_axis (1 - eccentricity*2)**0.5 # 반단축 (b)

# 원운동 파라미터

orbit_radius = 1 # 원 운동 반지름

period_elliptical = 10 # 타원 운동 주기 (초)

period_circular = 1 # 원 운동 주기 (초)

dt = 0.01 # 시간 간격

t = 0 # 초기 시간

# 천체 생성

elliptical_body = sphere(pos=vector(semi_major_axis, 0, 0), radius=0.1, color=color.blue, make_trail=True) # 타원 운동하는 물체

circular_body = sphere(pos=elliptical_body.pos + vector(orbit_radius, 0, 0), radius=0.05, color=color.red, make_trail=True) # 원 운동하는 물체

cycloid_path = curve(color=color.green) # 사이클로이드 경로

# 시뮬레이션 루프

while True:

rate(100) # 초당 100 프레임

# 타원 운동: 중심 물체의 위치 업데이트

elliptical_x = semi_major_axis cos(2 pi * t / period_elliptical)

elliptical_y = semi_minor_axis sin(2 pi * t / period_elliptical)

elliptical_body.pos = vector(elliptical_x, elliptical_y, 0)

# 원 운동: 타원 중심을 기준으로 원 운동하는 물체의 위치 업데이트

circular_x = elliptical_body.pos.x + orbit_radius cos(2 pi * t / period_circular)

circular_y = elliptical_body.pos.y + orbit_radius sin(2 pi * t / period_circular)

circular_body.pos = vector(circular_x, circular_y, 0)

# 사이클로이드 경로 업데이트

cycloid_path.append(pos=circular_body.pos)

# 시간 업데이트

t += dt

# data[].attributes.attachment_link.title
타원사이클로이드운동.PNG

# data[].attributes.headline
2학기 수행평가_소수 구하기_pdf

# data[].attributes.subject
2학기 수행평가_소수 구하기_pdf

# data[].attributes.headline
2학기 수행평가_소수구하기 동영상

# data[].attributes.subject
2학기 수행평가_소수구하기 동영상

# data[].attributes.headline
소수구하기(에라토스테네스의 체)

# data[].attributes.subject
소수구하기(에라토스테네스의 체)

# data[].attributes.headline
2학기 수행평가 소수구하기 블록코딩

# data[].attributes.subject
2학기 수행평가 소수구하기 블록코딩

# data[].attributes.headline
소수 구하기_약수의 개수

# data[].attributes.subject
소수 구하기_약수의 개수

# data[].attributes.headline
소수 구하기_약수의 개수_pdf

# data[].attributes.subject
소수 구하기_약수의 개수_pdf

# data[].attributes.headline
수행평가_알지오매쓰_프랙탈나무 pdf

# data[].attributes.subject
수행평가_알지오매쓰_프랙탈나무 pdf

# data[].attributes.headline
수행평가 영상_알지오매쓰_프랙탈나무

# data[].attributes.subject
수행평가 영상_알지오매쓰_프랙탈나무

# data[].attributes.headline
수행평가_파이썬_1년달력 pdf

# data[].attributes.subject
수행평가_파이썬_1년달력 pdf

# data[].attributes.headline
수행평가_파이썬_1년달력 동영상

# data[].attributes.subject
수행평가_파이썬_1년달력 동영상

# data[].attributes.attachment_link.title
1단원(빅데이터와 4차 산업혁명).pdf

# data[].attributes.attachment_link.title
3단원(엑셀의 자동화 서식 만들기).pdf

# data[].attributes.attachment_link.title
4단원(빅데이터를 활용한 비즈니스 엑셀 활용).pdf

# data[].attributes.body
타원운동

# data[].attributes.headline
태양, 달, 지구의 원운동 시뮬레이션

# data[].attributes.body
태양, 달, 지구의 원운동 시뮬레이션

# data[].attributes.attachment_link.readable_text
VPython is an easy-to-use, powerful environment for creating 3D animations. Here at glowscript.org (or webvpython.org, which takes you here), you can write and run VPython programs right in your browser, store them in the cloud for free, and easily share them with others. You can also use VPython with installed Python: see vpython.org.

The Help provides full documentation.
Welcome to VPython, a Trinket tutorial, is useful for anyone new to programming in VPython.

See the Example programs.
To get started writing your own programs you need to Sign in.

You are signed in as username and your programs are here.
Your files will be saved here, but it is a good idea to backup
your folders or individual files occasionally by using
the download options that are provided.

To use webvpython.org you will need to choose a unique name for yourself. This name will be visible to other internet users and will be part of the URLs you can use to share programs. You can use your own name or a pseudonym, but please try not to offend others.

Are you sure you want to make this folder PRIVATE?

Are you sure you want to delete this program? This action cannot be undone!

Are you sure you want to delete this folder?

Program does not start with the required version declaration:

# data[].attributes.attachment_link.description
VPython is an easy-to-use, powerful environment for creating 3D animations. Here at glowscript.org (or webvpython.org, which takes you here), you can write and run VPython programs right in your browser, store them in the cloud for free, and easily share them with others. You can also use VPython with installed Python: see vpython.org.

# data[].attributes.attachment_link.readable_text
VPython is an easy-to-use, powerful environment for creating 3D animations. Here at glowscript.org (or webvpython.org, which takes you here), you can write and run VPython programs right in your browser, store them in the cloud for free, and easily share them with others. You can also use VPython with installed Python: see vpython.org.

The Help provides full documentation.
Welcome to VPython, a Trinket tutorial, is useful for anyone new to programming in VPython.

See the Example programs.
To get started writing your own programs you need to Sign in.

You are signed in as username and your programs are here.
Your files will be saved here, but it is a good idea to backup
your folders or individual files occasionally by using
the download options that are provided.

To use webvpython.org you will need to choose a unique name for yourself. This name will be visible to other internet users and will be part of the URLs you can use to share programs. You can use your own name or a pseudonym, but please try not to offend others.

Are you sure you want to make this folder PRIVATE?

Are you sure you want to delete this program? This action cannot be undone!

Are you sure you want to delete this folder?

Program does not start with the required version declaration:

# data[].attributes.attachment_link.description
VPython is an easy-to-use, powerful environment for creating 3D animations. Here at glowscript.org (or webvpython.org, which takes you here), you can write and run VPython programs right in your browser, store them in the cloud for free, and easily share them with others. You can also use VPython with installed Python: see vpython.org.

# data[].attributes.attachment_link.readable_text
VPython is an easy-to-use, powerful environment for creating 3D animations. Here at glowscript.org (or webvpython.org, which takes you here), you can write and run VPython programs right in your browser, store them in the cloud for free, and easily share them with others. You can also use VPython with installed Python: see vpython.org.

The Help provides full documentation.
Welcome to VPython, a Trinket tutorial, is useful for anyone new to programming in VPython.

See the Example programs.
To get started writing your own programs you need to Sign in.

You are signed in as username and your programs are here.
Your files will be saved here, but it is a good idea to backup
your folders or individual files occasionally by using
the download options that are provided.

To use webvpython.org you will need to choose a unique name for yourself. This name will be visible to other internet users and will be part of the URLs you can use to share programs. You can use your own name or a pseudonym, but please try not to offend others.

Are you sure you want to make this folder PRIVATE?

Are you sure you want to delete this program? This action cannot be undone!

Are you sure you want to delete this folder?

Program does not start with the required version declaration:

# data[].attributes.attachment_link.description
VPython is an easy-to-use, powerful environment for creating 3D animations. Here at glowscript.org (or webvpython.org, which takes you here), you can write and run VPython programs right in your browser, store them in the cloud for free, and easily share them with others. You can also use VPython with installed Python: see vpython.org.

# data[].attributes.headline
태양계(태양-지구-달)시뮬레이션

# data[].attributes.subject
태양계(태양-지구-달)시뮬레이션