본문 바로가기
스크래치/스크래치 물리강좌

스크래치로 물리실험하기-5. 두개의 물체의 스프링 작용

by 할거없네 2017. 11. 8.

안녕하세요. 승승이입니다.

스크래치로 물리실험하기 5번째입니다.

이번에는 2개의 물체를 가지고 실험해보겠습니다.

지난 시간에는 매우 간단하게 영점(0,0)에 고정된 스프링에 대해서 질량 m의 물체를 적용하였습니다. 이번에 2개를 물체를 사용한다면 어떻게 해야 할까요? 각각의 물체에 적용하는 자신의 위치, 속도, 가속도를 각각 따로따로 계산을 하고, 단지 두개에 적용되는 힘을 서로 스프링의 힘으로 인해 반작용으로 작용시키면 됩니다. 물체를 각각 1번과 2번으로 정의해 봅니다.




여기서 외부힘을 가하는 공은 오로지 2번공이라고 가정합니다. 역시 좌우키를 누름에 따라서 외부힘은 왼쪽 또는 오른쪽으로 힘을 가하도록 되어 있습니다. 이 스프링이 늘어나는 길이를 x2-x1로 정하면 2번공에 가해지는 스프링 힘은 -k(x2-x1)이 되며, 1번공은 그 반대로 k(x2-x1)이 가해집니다.

이제 프로그램상에서 2개의 공에 대해서 어떻게 작용하는지만 잠깐 고민하면 됩니다. 여러가지 방법이 있겠지만 처음부터 이를 감안해서 지역변수 리스트를 사용했습니다. 스크래치에서 '복제하기'를 하면 이 지역변수도 각각 사용됩니다.




프로그램 상의 필요한 계산은 단순히 위와 같습니다.

물론 초기값이나 여러가지 세팅값도 필요한데 자세한 사항들은 스크립트에서 직접 보시는게 좋을거 같습니다. 여기서 사용한 프로그램에서는 단순히 1번이냐 2번이냐 따라서 스프링 힘이 +로 작용하느냐 -작용하느냐만 다를 뿐입니다. 속도와 위치를 정하는 규칙은 모든 물체에 동일하고, 단지 힘만 바뀌는 것을 알 수 있습니다. 어쩌면 복잡해 보이는 시스템도 이와 같이 어떤 힘이 작용되는지 그 규칙을 따져서 만들면 여러가지 시뮬레이션을 구현이 가능합니다.



부가적으로 추가된 설정으로는 처음에 복제 할 때 각각의 공을 넘버링 하여 복제하기 하였다는 점과,

메인 루틴으로 두 공의 거리를 각각 계산하도록 하였습니다.


복제하기 초기값에서는 공1번과 2번의 구분을 위하여 색을 조금 다르게 하도록 코드 추가하였고,

번호1번과 2번의 위치 초기값을 각각 -50, 50으로 설정하였습니다.

시뮬레이션에서 플래시 플레이어로 적용하면 깃발 버튼이 숨겨져서 재시작을 못하기 때문에, 재시작 버튼을 추가되었지만 이 부분에 대한 설명은 프로그램상 중요한 부분이 아니기 때문에 생략합니다.






스크립트 보기:

https://scratch.mit.edu/projects/184904361/



댓글