저항력, 중력 벡터 GUI구현
Drag force and Gravity 이번에는 Python, PyQt5를 이용해 구현한 저항력(Drag force), 중력(Gravity) 예제를 소개하려 합니다. 자세한 소스코드는 맨 뒤에 살펴보고, 일단 수식 유도과정과 결과만 살펴보겠습니다. 앞 게시물인 벡터(1편) , 힘과 가속도(2편) 에 이어지는 내용입니다. 1. 유체 저항 어떤 물체가 공기나 물속에서 받는 저항을 어떻게 프로그래밍으로 구현할 수 있을까요? 아래는 유체 저항(벡터, 힘)을 구하는 수식입니다. 각각, F 는 저항력, C는 저항 계수, A는 유체와 닿는 앞면적, p는 액체밀도, V는 속도의 방향을 뜻하는 단위벡터입니다. 저항력 F 벡터를 구해 속도의 방향과 반대로 적용 해 주면 힘이 감소 됩니다. [유체저항 공식] 앞 게시물에서 가속도는 속도 에 영향을 미치고, 속도는 위치 에 영향을 미친다는 사실을 살펴보았습니다. 또한 가속도, 속도, 위치는 벡터라는 것도 살펴보았습니다. 실제 우리가 사는 세계나 정확한 계산이 필요한 시뮬레이션 소프트웨어라면 위의 수식에 들어가는 계수(Coefficient)들을 정확하게 측정해서 적용 해야 하겠지만 우리가 만드는 코드는 꼭 정확해야 할 필요는 없습니다. 왜냐하면, 프로그래머인 내가 창조하는 소프트웨어 속 세상에서 유체저항을 내가 원하는 대로 만든다고 해도 누가 뭐라 할 사람은 없습니다. 이해를 돕기 위해 위의 유체저항 공식을 재 구성해 보겠습니다. 위 수식에서 저항계수(C), 물체 앞면적(A), 액체 밀도(p)는 프로그래머가 편리하게 상수를 정해 쓰면 됩니다. 예) 저항계수(C) : 0.1, 물체 앞면적(A) : 무시, 액체 밀도(p) : 1 ... 이렇게 생각하면 위 유체저항 수식은 아래와 같이 간략히 만들어 볼 수 있습니다. 저항력(힘, 벡터) = 속도(벡터) * 속도(벡