球の衝突運動の件

 投稿者:lark12_long  投稿日:2014年 7月11日(金)15時04分16秒
  SECOND様
早速のプログラム提供有難うございます
補修の形で提供頂き、大変助かります
早速、図を書いて勉強いたします

lark12_long
 

Re: 球の衝突運動の件

 投稿者:SECOND  投稿日:2014年 7月11日(金)15時20分18秒
  > No.3417[元記事へ]

lark12_longさんへのお返事です。

!こちらが、見やすいです。

!---------------------------------------------------------------
! 球同士の衝突( 球表面の摩擦係数0、同質量)
!
! ※法線単位ベクトルの内外向き、
!   接線単位ベクトルの回転向きは、(i)(j)が共用 する限り何れも可。
!---------------------------------------------------------------
SUB cal1
   IF n>=2 THEN
      FOR j=0 TO n-1
         IF i<>j THEN
            LET lb=SQR( (xb(i)-xb(j))^2+(yb(i)-yb(j))^2)   !過去の球(i)(j)間距離
            LET  l=SQR( ( x(i) -x(j))^2+( y(i) -y(j))^2)   !現在の球(i)(j)間距離
            IF l<=2*r AND l< lb THEN                       !距離と、その増減で、衝突判定
               LET nx=(x(i)-x(j))/l             !接触点 法線単位ベクトル x 成分
               LET ny=(y(i)-y(j))/l             !    〃       y 成分
               LET tx=-ny                       !    接線単位ベクトル x 成分
               LET ty= nx                       !    〃       y 成分
               !--
               LET v_in=nx*vx(i)+ny*vy(i)       !接触点 法線方向の 球(i)速度ベクトル内積
               LET v_jn=nx*vx(j)+ny*vy(j)       !    〃    球(j)速度ベクトル内積
               swap v_in, v_jn                  !    〃    球(i)(j)速度 入替り
               LET v_it=tx*vx(i)+ty*vy(i)       !    接線方向の 球(i)速度ベクトル内積
               LET v_jt=tx*vx(j)+ty*vy(j)       !    〃    球(j)速度ベクトル内積
               !--
               LET vx(i)= nx*v_in +tx*v_it      !球(i)速度ベクトルの x 成分
               LET vy(i)= ny*v_in +ty*v_it      !     〃    y 成分
               LET vx(j)= nx*v_jn +tx*v_jt      !球(j)速度ベクトルの x 成分
               LET vy(j)= ny*v_jn +ty*v_jt      !     〃    y 成分
            END IF
         END IF
      NEXT j
   END IF
END SUB
 

戻る