튀는 공에 대한 모델 / 공식

나는 튀는 공의 애니메이션을 프로그래밍하고 있으며 가능한 한 현실적이기를 원합니다.

나는 공이 오르고 내리는 동안의 물리학을 완전히 이해합니다. 공이 9.8 미터 / 초 / 초로 아래쪽으로 가속합니다.

하지만 일단 땅에 떨어지면 길을 잃습니다. 나는 그것이 “속도를 다시 위로 옮기는 약간의 압축을 경험한다는 것을 알고있다. 그 지점에서 중력은 다시 그것에 작용하는 유일한 힘이다. 그러나 나는지면을 치는 공의 압축과 편향을 모델링하는 방법을 모른다.” / p>

(또한 저는 엄격하게 수직 선형 속도와 가속도 만 다루고 있습니다. 공은 “수평으로 이동하거나 전혀 회전하지 않습니다. 그리고 공기 저항에 대한 손실은 무시할 수있을 정도라고 가정합니다.)

나는 처리해야 할 상수가 있다는 것을 알고 있습니다. 공이 압축에 얼마나 저항하고 바운스 중에 얼마나 많은 에너지가 손실되는지 알지만, 그것들이 어떻게 관련되어 있는지는 모릅니다.

누구나 나에게 줄 수 있습니까? 한 단락 또는 두 단락으로 된 설명 및 / 또는 (a) 공식 (e) 및 / 또는 더 많은 것을 읽을 수있는 리소스를 알려 줍니까? (예, 이미 한 시간 정도 인터넷 검색을 해봤습니다.)

이해할 때까지 계속해서 읽게되어 기쁩니다.이 시점에서 어디로 넘어 가야할지 모르겠습니다.

p>

미리 감사합니다!

댓글

답변

공기의 마찰을 무시한다고 말하지만 부분적으로 비탄성적인 충돌을 가정합니다. 즉, 문제를 두 부분 :

  1. 공이지면에 닿지 않는 동안 $ t_0 $에서 마지막 바운스 후 $ t $ 시점의 높이는 $$ h (t + t_0)로 지정됩니다. = v_0 t-\ frac12 gt ^ 2 $$ 여기서 $ v_0 $는 바운스 직후의 속도입니다. 이 속도는 한 바운스에서 다음 바운스로 변경됩니다.
  2. 충격 중에 공이 변형되고 마찰이 발생합니다. 공과 바닥의 구성에 따라 충격을받는 동안 공의 정확한 모양을 간단한 방정식으로 포착하기가 어렵습니다. 단순화 된 가정으로 볼을 “스프링 상수 $ k $를 사용하는 약간 손실 된 스프링의 질량”이라고 생각하십시오. 그러면 공은 충격 중에 (대략) 감쇠 된 단순 조화 운동을 나타냅니다. 이는 충격 시간이 충격 속도 (!)와 독립 된다는 것을 의미합니다.

반발 계수 는 공 / 표면의 매개 변수이며 바운스 직후의 속도를 직전 속도로 나눈 비율을 반영합니다. 골프 공의 경우 0.8까지 높을 수 있습니다. 테니스 공의 경우 약 0.75입니다.

$ \ rho = 0.75 $를 사용하여 5m 높이에서 공을 떨어 뜨리면 $ g = 10 ~ m / s ^ 2 $ 편리함) 1 초 후 10m / s의 속도로 착륙하고 바운스 (약간 $ \ Delta t $) 후에 다시 낮은 속도로 $ v_1 = 7.5m / s $로 올라옵니다. 다음 바운스까지 공중에서 보낸 시간은 $$ t_1 = 2 \ frac {v_1} {g} = 2 \ rho \ frac {v_0} {g} $$

공이있는 동안 지면과 접촉하면 중심이 거의 정현파 방식으로 움직이는 것으로 간주 할 수 있습니다. 제가 말했듯이 중요한 것은 접촉 시간이 낙하 높이와 무관하다는 것입니다 (선형 스프링 상수 가정에서). 실제로 볼이 더 많이 변형됨에 따라 스프링 상수가 증가하여 실제로 충돌 속도가 높을수록 접촉 시간이 짧아집니다. 그러나 중요하지 않은 시뮬레이션의 경우

위에서 “수학적 모델”로 전환하려면이 Python 코드를 필요에 맞게 수정해야 할 수 있습니다.

from math import sqrt import matplotlib.pyplot as plt h0 = 5 # m/s v = 0 # m/s, current velocity g = 10 # m/s/s t = 0 # starting time dt = 0.001 # time step rho = 0.75 # coefficient of restitution tau = 0.10 # contact time for bounce hmax = h0 # keep track of the maximum height h = h0 hstop = 0.01 # stop when bounce is less than 1 cm freefall = True # state: freefall or in contact t_last = -sqrt(2*h0/g) # time we would have launched to get to h0 at t=0 vmax = sqrt(2 * hmax * g) H = [] T = [] while(hmax > hstop): if(freefall): hnew = h + v*dt - 0.5*g*dt*dt if(hnew<0): t = t_last + 2*sqrt(2*hmax/g) freefall = False t_last = t + tau h = 0 else: t = t + dt v = v - g*dt h = hnew else: t = t + tau vmax = vmax * rho v = vmax freefall = True h = 0 hmax = 0.5*vmax*vmax/g H.append(h) T.append(t) print("stopped bouncing at t=%.3f\n"%(t)) plt.figure() plt.plot(T, H) plt.xlabel("time") plt.ylabel("height") plt.title("bouncing ball") 

이 코드는 다음 플롯을 생성합니다.

여기에 이미지 설명 입력

답변

글쎄, 난이도는 공이 벽에 닿을 때입니다. 몇 가지 고려할 수 있습니다.

  • 탄력적 영향. 이 경우 공을 탄성 스프링으로 취급 할 수 있습니다. 속도로 벽에 충돌하면 운동 에너지가 스프링의 위치 에너지로 변환되고 최대 변형에 도달하면 공이 다시 공간으로 튀어 나오며 변형 방향은 벽에 수직입니다.
  • 비탄성 충격. 공이 운동 에너지의 일부만 회복한다는 점을 제외하면 위와 유사합니다. 이것은 현실에 더 가깝습니다. 손실은 일반적으로 복원 계수를 사용하여 설명됩니다.
  • 마찰에 의한 비탄성 충격. 공이 비스듬히 벽에 닿으면 공이 표면에서 미끄러질 수 있습니다. 이것은 현실에 더 가까워집니다.
  • 에어 드래그. 공이 움직일 때 공간은 공을 늦추는 공기 항력이 있습니다.

댓글

  • 죄송합니다. ' 충분히 명확하지 않은 것 같습니다. 저는 ' 부분적으로 비탄력적인 영향에 대해 이야기하고 있습니다. 내 원래 게시물에서 " … 반송 중 손실되는 에너지의 양 … ". 또한 원본 게시물에서 ' 에어 드래그를 무시하고 있다고 언급했습니다 (" … I ' 공기 저항 손실이 미미하다고 가정합니다 … "), 저는 ' 횡보 운동량을 모델링하려고하지 않습니다. (" 마찰로 인한 비탄성 영향 "). 지면과 충돌하는 동안 발생하는 압축, 감속, 감압 및 가속과 전체 프로세스에 내재 된 에너지 손실을 모델링하고 싶습니다.

Answer

Visual Solutions (현재 Altair)는 VisSim Software를 만듭니다. 다음은 튀는 공을 시뮬레이션하는 데 사용한 데모 블록 다이어그램입니다. 여기에 이미지 설명 입력

$ 1 / s $ 블록은 VisSim 라이브러리의 적분기 블록입니다.

이러한 매개 변수가있는 튀는 공의 플롯은 다음과 같습니다.

여기에 이미지 설명 입력

이 작업을 실행하는 데 관심이있는 경우 데모가 설치 및 60 일 무료 평가판은 여기

에서 다운로드 할 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다