오늘은 힘에 대해서 공부를 시작해 보겠습니다. Yeah!
힘에 관련한 뉴튼의 세 가지 법칙을 살펴 보면서, 힘이 물체에 작용하여 물체를 움직이게 되는 과정을 오일러 적분 알고리즘을 통해 구현해 볼게요~^^*
Force Law #1: 가만히 있는 물체는 가만히 있으려고 하고 움직이는 물체는 같은 방향과 속도로 계속 움직이려고 합니다.
Force Law #2: 물체에 가해지는 힘에 물체의 질량을 곱하면 물체의 가속도가 됩니다.
Force Law #3: 같은 크기이면서 서로 반대방향으로 작용하는 한 쌍의 힘이 항상 물체에 작용합니다.
오일러 적분은 초당 30개의 시간간격이 발생하는 p5.js의 화면변화처럼, 큰 단위 (30/sec)의 시간을 다루기에 적합합니다. 그래서, 표현할 수 없을 정도록 아주 미세한 시간을 다루는 미분법이 아니라, 오일러 적분을 사용해서, 사람 눈에 자연스럽게 표현하기에 쉽고 빠른 알고리즘을 기반으로 프로그램을 만들어 볼게요~^^* 방법은~
(1) 힘을 질량으로 나누어 가속도를 얻는다. (2) 속도에 가속도를 더한다. (3) 변화된 이 속도를 위치에 더하여 위치를 변화시킨다. 참~ 쉽죠~^^* 이 순간 밥 아저씨의 목소리가 들리시나요?
힘에 대한 공부 그 첫 날인 오늘은 동그라미에 가해지는 중력을 프로그램으로 구현해 보겠습니다.
아래 동영상을 클릭하셔서 12분40초까지만 보시면 오늘 공부 끝~^^* 노트도 참고해 보시면 좋겠죠~^^*




class Mover{
constructor(x,y){
this.pos = createVector(x,y);
this.vel = p5.Vector.random2D();
this.vel.mult(random(3));
}
applyForce(force){
this.acc = force;
//질량 1을 가진 동그라미에 가해지는 힘은 그대로 가속도가 된다.
//Acceleration = Force * 1;
}
update(){
this.vel.add(this.acc);
this.pos.add(this.vel);
}
show(){
stroke(255);
strokeWeight(2);
fill(255, 100);
ellipse(this.pos.x, this.pos.y,32);
}
}
let mover;
function setup() {
createCanvas(400, 400);
mover = new Mover(200,200);
}
function draw() {
background(0);
let gravity = createVector(0,1);
//벡터 중력은 x축 작용은 없고 y축 아래방향으로 작용(p5.js 캔버스의 원점은 왼편 위쪽 모서리이므로, y 값의 증가는 아래방향으로의 이동을 의미한다.)
mover.applyForce(gravity);
//중력이 동그라미에 가해지는 외부의 힘으로 작용하도록, Class mover 안에 정의된 함수 applyForce()를 호출하며 벡터 gravity를 파라미터로 넣는다.
mover.update();
mover.show();
}
오늘 우리가 만난 오일러님, 좀더 자세히 알아볼까요? 이것을 클릭해 보셔요~
We don’t make mistakes. We have happy accidents. 따뜻한 목소리와 미소를 가진 밥 아저씨를 다시 만나 볼까요?
오일러님과 밥 아저씨를 다시 뵈면서, 이 세상의 어느 작은 문제에 대한 솔루션 하나라도, 작은 아름다움 하나라도 기여할 수 있는 사람이 되고 싶다는 소망을 소중하게 매만지게 됩니다. 우리 함께 공부하며 계속 걸어요~^^*.
꿈은 이루어 집니다!
함께 공부해 주셔서 감사합니다~^^*
댓글 남기기