본문 바로가기

스크래치/스크래치 물리강좌10

스크래치 물리강좌. 충돌처리 만들기 1. 충돌 개체 만들어 주기 게임을 만들 때 많이 사용하게 되는 '충돌처리'에 대해서 알아봅니다. 충돌처리는 어떤 개체와 개체사이가 서로 닿았는지 확인하는 방법입니다. 여러가지의 방법이 있지만 여기서는 간단한 시스템으로 이해해볼까 합니다. 충돌하는 개체의 모양은 계산의 단순화를 위해 사각형 충돌처리를 만들어 봅니다. ▲ 서로 충돌하는지 확인하는 가장 간단한 방법은 네모를 그려서 확인하는 것이다. 사각형에 충돌을 위한 연산으로 위치(x,y)와 가로, 세로길이입니다. 사각형은 여러개를 취급해야 하므로 하나하나의 변수보다는 리스트를 사용하는 것이 더욱 간단합니다. 각 변수만큼 리스트로 만들고, 첫번째 두번째... 등을 리스트의 번호순으로 사용하기로 합니다. ▲ 미리 리스트로 만들어야 n개의 충돌처리를 할 수 .. 2018. 4. 20.
스크래치 물리강좌. 기본적인 모델링 여러가지 물체의 운동을 모델링 해 봅니다. 간단한 시스템을 모델링을 하는 방법을 연구해봅니다. 1. 자유낙하하는 물체 자유낙하하는 물체는 오로지 중력만을 받습니다. 여기서 y와 g의 방향이 서로 반대이므로 마이너스 부호(-)를 넣습니다. 2. 자유낙하하는 물체(공기저항) 물체가 떨어지면 공기의 저항을 받는다고 가정합니다.이때 공기의 저항은 여러가지 요소가 있지만 속도의 크기(y')에 비례한다고 가정합니다.방향은 속도의 반대방향이므로 (y')에 음의 부호가 붙습니다. 만약에 속도가 -1이라면 힘은 +1만큼 위로 향하는 모양이 됩니다. 3. 일정한 힘을 받는 물체 F의 힘을 일정하게 주게 되면 가속도는 F에 비례하여 증가합니다. 4. 마찰력을 받는 물체 원래는 지면에 의한 운동 마찰력은 물체의 무게에 비례한.. 2018. 4. 20.
스크래치 물리강좌. 운동방정식을 미분방정식으로 구현하는 이유 스크래치에서 물리적인 법칙을 프로그래밍을 하기 위해서는 어떤 지식이 필요한지 알아봅니다. 1. 시간에 따른 운동방정식 풀이가장 이해하기 쉬우면서도 가장 어려운 방법입니다.물질의 운동상태가 결정되면 시간에 따라 결정됩니다.이것을 시간에 대한 방정식으로 풀이하여 어느 시간에 어디에 있는지 정확히 알 수 있습니다.가령 정속도로 v인 물체가 있다면 위치는 속도x시간으로 다음과 같이 구할 수 있습니다. 하지만 실제로 자동차나 자전거나 속도는 언제나 시간에 따라 다릅니다. 이때는 속도의 정의로써 순간 속도는 이동거리를 시간으로 미분한 것으로 정의됩니다. 다시 거꾸로 이동거리는 속도를 적분한 것입니다. 따라서 시간에 따라 변화하는 속도에 대해서 위치는 다음과 같습니다. 이렇게 속도-위치의 관계만 보더라도 위치를 알려.. 2018. 4. 20.
스크래치로 물리실험하기-7. 물체의 충돌 구현 안녕하세요. 승승이입니다.이번에는 약간의 상상력도 필요한 이야기입니다. 우리가 물체가 분자로 이루어져 있고 그 안에 원자로 구성되어 있고 더 나아가서는 더 작은 물질들로 이루어져 있다는 이야기는 상식으로 알고 있습니다. 그 물질들의 대부분의 공간은 빈 공간입니다. 그런데 빈 공간에서 어떻게 우리가 물체를 만지고 잡을 수 있을까요? 우리가 보고 있는 실체는 99%가 빈 공간이기 때문에 눈으로 보는 세상과 실제로 만지는 느낌들은 단순히 뇌에 자극으로 들어오는 것이고 실체가 없는건 아닌가 하는 이야기도 있습니다.과학적으로 보면 물체가 색을 가지는 것은 원자 껍데기에 있는 전자가 빛을 받아서 들뜬 상태로 되다가 다시 안정화 되면서 빛을 발산한 것을 눈으로 보기 때문입니다. 그러면 물체를 만지는 것은 어떻게 될까.. 2017. 11. 15.
스크래치로 물리실험하기-6. 두개의 인력 안녕하세요. 승승이입니다.이번에 스크래치로 실험할 이야기는 '인력'입니다.인력은 잡아당기는 힘인데, 중력도 있고 자기력도 있고 전기력도 있고 여러가지가 있기 때문에 무난하게 '인력'이라고 칭하고 시뮬레이션을 만들어 봅니다. 처음에는 2개에 대해서 잡아당기는 것을 만들 예정인데, 이것을 여러 개 만들어 볼까 합니다. 즉, 프로그램상에서 여러 개의 상호작용을 어떤식으로 구현하는게 좋을지 고민을 해볼 시간입니다. 먼저 2개의 물체만을 생각해봅시다. 여기서 각 물체의 번호를 n이라고 칭하고, 순서대로 1과 2인 물체를 생각합니다. 각각 작용하는 힘은 거리의 제곱의 반비례, 그 힘의 크기는 물체 질량 곱의 비례한다고 가정합니다. 네, 중력과 같은 공식입니다. 여기서 상수 kg는 임의로 사용하기로 합니다. 여러 개.. 2017. 11. 12.
스크래치로 물리실험하기-5. 두개의 물체의 스프링 작용 안녕하세요. 승승이입니다.스크래치로 물리실험하기 5번째입니다.이번에는 2개의 물체를 가지고 실험해보겠습니다. 지난 시간에는 매우 간단하게 영점(0,0)에 고정된 스프링에 대해서 질량 m의 물체를 적용하였습니다. 이번에 2개를 물체를 사용한다면 어떻게 해야 할까요? 각각의 물체에 적용하는 자신의 위치, 속도, 가속도를 각각 따로따로 계산을 하고, 단지 두개에 적용되는 힘을 서로 스프링의 힘으로 인해 반작용으로 작용시키면 됩니다. 물체를 각각 1번과 2번으로 정의해 봅니다. 여기서 외부힘을 가하는 공은 오로지 2번공이라고 가정합니다. 역시 좌우키를 누름에 따라서 외부힘은 왼쪽 또는 오른쪽으로 힘을 가하도록 되어 있습니다. 이 스프링이 늘어나는 길이를 x2-x1로 정하면 2번공에 가해지는 스프링 힘은 -k(x.. 2017. 11. 8.
스크래치로 물리실험하기-4. 스프링실험 안녕하세요. 승승이입니다.이번에는 스프링 실험을 하겠습니다. 스프링의 특징으로는 스프링이 늘어난 만큼 힘을 반대로 가한다는 것입니다. 그 점을 감안하여 다음과 같은 시스템을 생각해 봅니다. 여기서 거리 L은 영점(0,0)에서의 거리입니다.이것은 오로지 x좌표이므로 x=l이 됩니다.k값은 임의의 스프링 상수입니다. 스프링의 종류에 따라 상수가 클 수도 있고 작을 수 있습니다. 이것은 실험할 때 임의로 정하면 됩니다. 이제 프로그램으로 작성해 봅니다. 참 쉽죠? 시스템이 간단한 만큼 프로그램도 매우 간단합니다.가속하는 주는 부분만이 변경됩니다. 스크립트 보기: https://scratch.mit.edu/projects/184627840/ 2017. 11. 7.
스크래치로 물리실험하기-3. 마찰력 실험 안녕하세요. 승승이입니다.지난번에서 힘과 가속도, 속도, 위치에 대한 식을 프로그램에서 구현해봤습니다.이번에는 마찰력을 넣을 차례입니다.마찰력에는 종류가 여러가지 많습니다. 지면마찰도 있고 공기저항도 있고 여러가지입니다.공기저항력은 저속일 때는 속도에 비례, 고속이면 속도의 제곱이 비례합니다.지면마찰력은 정지마찰과 운동마찰이 있는데, 정지마찰력은 속도가 0일 때 일정 힘 이하에서는 정지하도록 되어 있는 마찰력입니다. 운동마찰은 운동하기 시작하면 일정한 값으로 적용되는 마찰력입니다.여기서는 어떠한 이유로 인해 속도에 비례하는 마찰력을 만들어 볼까 합니다. 그러면 공이 전체 받는 힘 F는 외력과 마찰력만을 고려하고, 마찰력이 속도에 비례하도록 결정하면 됩니다. 가속도, 속도, 위치에 대한 공식은 변함이 없습.. 2017. 11. 6.
스크래치로 물리실험하기-2. 가속도/속도/위치 시뮬레이션 안녕하세요. 승승이입니다. 이번에는 미적분을 어떻게 프로그램에서 구동하는지 간단한 예제를 통해 알아보고자 합니다. 여기서는 간단하게 한 개의 무중력 마찰이 없는 공을 생각합니다. 공에 대한 속성을 정리하였습니다. 중력이나 마찰력이나 다른 힘은 고려하지 않고 오로지 외부에서 주는 힘 u만 생각한 것입니다. 힘을 받으면 가속도 x''가 결정되고, 다시 가속도에 의해서 속도 x'가 결정, 속도에 의해 위치 x가 결정됩니다. 나중에 각각의 변수들은 하나하나 만들기 어려워지므로 리스트를 써서 규칙을 정하기로 합니다. 1번째는 x, 2번째는 x', 3번째는 x''입니다. 시뮬레이션의 기본적인 조건으로 초기값을 결정해줘야 하는데, 가속도, 속도, 위치 모두 0으로 둡니다. 이제 계산식은 위와 같이 정해집니다. 참 간.. 2017. 11. 3.
스크래치로 물리실험하기-1. 미적분은 어떻게 구현하는가? 안녕하세요. 승승이입니다.프로그램의 주요 사용 목적중인 하나인 '시뮬레이션'을 해볼까 합니다.교육과정에서는 이러한 시뮬레이션하는 기회가 별로 없는데, 대학교에서는 직접 배운 수학, 과학적 이론을 컴퓨터로 시뮬레이션 하는 기회가 오게 됩니다.스크래치도 프로그램으로써 시뮬레이션이 가능한데요, 여러가지 실험을 하기 위해서는 프로그램으로 미적분을 어떻게 만드는지 알고 있어야 합니다.미적분 하면 벌써 머리가 아파올 수 있지만 의외로 컴퓨터에서의 미적분은 매우 쉽습니다. 프로그램에서의 미분은 '변화량'이고, 적분은 '누적'입니다. 참 쉽죠?프로그램도 한번 볼까요? x의 변화량은 x현재 - x과거 로 정의할 수 있습니다.수학적으로의 미분의 정의는 아래와 같은데요 이걸 컴퓨터에서 비슷하게 구현하면 이렇게 됩니다. 컴퓨.. 2017. 11. 3.