青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

基于沖量的剛體碰撞運動

來源:http://www.vbgamedev.com/AI/Impulsive.htm

基于沖量的剛體碰撞運動

 

原作者:

Katsuaki Kawachi ,Hiromasa Suzuki, Fumihiko Kimura,J¨org Sauer,Elmar,Sch omer

整理,編寫代碼:  ZH1110

 

我們在模擬中通常會遇到三種接觸情況:

1.雙側的強制約束(Bilateral Constraints),約束始終保持,以前所研究過的是其中的一種方法.

2.瞬間非持久接觸(non-permanent permanent contacts),如鍛鐵、打樁等,可稱為碰撞。其特點是在很短的時間間隔內物體的速度發生突然的變化,所以我們很難直接計算其受力大小,而要通過碰撞前后速度變化的規律入手。在這一章我們主要討論基于沖量的兩剛體碰撞運動。

3.持久接觸(permanent contacts)第一種的特殊情況.運動著的物體,突然對其施加約束,物體的速度也會發生突變。但在一定條件下約束會消失.他是基于約束(Constraint-based)的

圖1,接觸的三種情況

 

本節將根據動力學的基本原理對碰撞現象進行描述,討論其的基本規律,及計算。

 

基本的沖突碰撞

 

一.簡化模型的基本的假設:

1.剛體是堅硬的不會因碰撞發生變形

2.對象是多邊形

3.摩擦計算基于庫侖定律

我們使用下面的符號來表示用到的物理量:(粗體-矢量,常規-標量)

ma ,mb      

對象a,b的質量

Ia ,Ib      

慣性矩, 轉動慣量

uA ,uB      

在碰撞前物體A,B中心線速度矢量

uA',uB'   

在碰撞以后物體A,B中心線速度矢量

ωA B     

碰撞前角速度

ωA',ωB'

碰撞以后角速度 

   

碰撞點

vA ,vB      

在碰撞前撞擊點線速度矢量

vA',vB'   

在碰撞以后撞擊點線速度矢量

GA ,GB

重心坐標

rA ,rB 

重心坐標到碰撞點的矢量

Pn 

碰撞的垂直沖量(Pn=Pn*N)

   

ra,rb在碰撞過程中不會改變,因為假設剛體在碰撞過程中不發生位置的變化.

寫成如下形式:

Va為碰撞前剛體A在碰撞點P的速度,Va'為碰撞后剛體A在碰撞點P的速度

 

 

角速度與線速度變化遵守沖量定理:

通過⑴,⑵方程式,我們合并為:

 

 

 

這個方程除了vA'還有Pn是未知量.注意:后面代碼我們是把N提到括號外面,計算沖量Pn的矢量數值的。

 

將后面已知部分化簡為一常量矢量CA, 類似的我們可得B物體的簡寫方程式:

B物體的N是相反的,即-N.

 

利用Va,Vb的的相對速度Vn,可以判斷是否發生碰撞,如果Vn < 0意味著發生碰撞,如果Vn = 0意味著發生接觸,如果Vn > 0意味著發生分離.Vn的定義如下:

和并后個方程式可得碰撞以后的相對速度V'n

如果有n個碰撞點這個方程可擴展為:

⑺ (本章暫不討論多個碰撞點同時發生的情況)

 

為了計算P,定義一個恢復因數ξ,(牛頓認為碰撞前后相對速度的比為此常數,且該常數與碰撞物體的材料性質有關,與物體的形狀、大小與碰撞前的速度無關。)這個重要公式為:

它表明:如果發生碰撞( Pn<>0 ),那么方程就變為

 Vn'=-ξVn

 

計算剛體碰撞運動的一般過程:

1.利用碰撞檢測技術檢測發生碰撞的二剛體及碰撞點P,碰撞的垂直方向N

2.使用公式計算相對速度Vn.如果Vn>=0,表示兩物體處于分離,不再進行計算退出. 使用公式⑼計算相對速度Vn'.

3.使用公式⑶,⑷計算常量Ca,Cb(如果是地面,可將其看做一個質量很大的剛體,也可單獨處理)

4.使用公式計算碰撞的垂直沖量Pn

5.將Pn代入⑵即可得到二剛體碰撞后的狀態.

代碼如下:

Private Sub process_collision(Boxa As box, Boxb As box, collpos As D3DVECTOR, colN As D3DVECTOR, extra As Single)
'開始正沖量的計算
Dim cl As collision
cl.N = colN  ' 碰撞的垂直方向
cl.Ra = Subtract(collpos, Boxa.pos)'重心坐標到碰撞點的矢量
cl.Rb = Subtract(collpos, Boxb.pos)
cl.Va = Add(cross(Boxa.Vang, cl.Ra), Boxa.v) ' v'= v +ω×R
cl.Vb = Add(cross(Boxb.Vang, cl.Rb), Boxb.v)
 cl.Vn = Dot(cl.N, cl.Va) - Dot(cl.N, cl.Vb) - 0.2 * extra '相對垂直速度, 另外副加微小沖量

cl.Vn2 = -0.4 * cl.Vn '垂直相對速度(碰撞后),0.4是恢復因數

If cl.Vn >= 0 Then Exit Sub

'計算Ca  Ca = 1/m+((Ra×N)/Iz×Ra)N Cb = 1/m+((Rb×N)/Iz×Rb)N
cl.Ca = 1 / Boxa.m + Dot(cross(VScale(cross(cl.Ra, cl.N), 1 / Boxa.Iz), cl.Ra), cl.N)
cl.Cb = 1 / Boxb.m + Dot(cross(VScale(cross(cl.Rb, cl.N), 1 / Boxb.Iz), cl.Rb), cl.N)

D3DXVec3Scale cl.Pn, cl.N, ((cl.Vn2 - cl.Vn) / (cl.Ca + cl.Cb))
applyimpulse Boxa, cl.Pn, collpos '應用正沖量
applyimpulse Boxb, VScale(cl.Pn, -1), collpos
...
End Sub

摩擦沖量

既然碰撞的正方向可以應用沖量方程,那么在與之相垂直的方向(摩擦力方向)也可用此方程,只是后面的判斷方法不同.

如果2個對象接觸并滑行,摩擦力會一直作用于滑行點上,同樣的如果發生碰撞,正沖量與摩擦沖量也同時工作,我們描述摩擦產生的沖量為摩擦沖量.

如果摩擦力做工,相切的摩擦沖量將要運做,(t是單位矢量相切于碰撞的邊,它的方向可通過P的的速度判斷.)如圖:

這種情況,相切的速度與沖量關系可以寫成類似于方程⑶的形式,:

 

在碰撞期間的摩擦力

在無摩擦的系統下,正接觸力fn(t)在[t0,t1]段間持續的作用于2剛體上,因此P點的正沖量為:

現在假設在P點的速度在碰撞開始和期間始終不為0,等量摩擦力ft(t)持續的作用,P點的摩擦量沖為:

(11)

假設在P點碰撞期速度變成了0,摩擦力頂多保持在靜摩擦狀態,摩擦量沖被限制在:

(12)

 

從上面的推斷我們可以推斷摩擦沖量的計算過程:

1.根據式⑼與式(11)的摩擦沖量都計算出來

2.如果前者小于后者表示動摩擦力不能一直維持到碰撞結束,實際摩擦沖量為前者,反之亦然.


'開始摩擦沖量的計算
Dim clnew As collision '已經改變的碰撞

...
Vr_all = Subtract(clnew.Va, clnew.Vb)

clnew.tangent_vel = Subtract(Vr_all, VScale(clnew.N, Dot(Vr_all, clnew.N)))'tangent_vel=Va-((Va·N-Vb·N)*N) '相切的速度
clnew.tangent_speed = VLength(clnew.tangent_vel) '相切的速度標量
If clnew.tangent_speed > 0 Then
Dim T As D3DVECTOR
D3DXVec3Scale T, clnew.tangent_vel, -1 / clnew.tangent_speed
clnew.Ca = 1 / Boxa.m + D3DXVec3Dot(T, cross(VScale(cross(clnew.Ra, T), 1 / Boxa.Iz), clnew.Ra))'Ca = 1/m+((Ra×T)/Iz×Ra)T
clnew.Cb = 1 / Boxb.m + D3DXVec3Dot(T, cross(VScale(cross(clnew.Rb, T), 1 / Boxb.Iz), clnew.Ra))
clnew.C = clnew.Ca + clnew.Cb

If clnew.C > 0 Then
Const friction = 0.5 '動摩擦系數
Dim Ptt As Single '臨時摩擦沖量
Ptt = clnew.tangent_speed / clnew.C
If Ptt < friction * VLength(cl.Pn) Then '動靜摩擦判斷
clnew.Pt = Ptt
Else
clnew.Pt = friction * VLength(cl.Pn)
End If

applyimpulse Boxa, VScale(T, clnew.Pt), collpos  '應用摩擦沖量
applyimpulse Boxb, VScale(T, -clnew.Pt), collpos
End If
End If

刺透處理

為防止一物體刺穿另一物體,需要對刺穿進行處理.一個方法是檢測時計算出刺入的深度,后在碰撞副加一微小沖量,使其分離.簡單的考慮到一次就對半分離過于突然,不能取得最好的效果,所以每次以按一比例分離

 

 

 

另一個簡單方法是直接修改剛體的位置:
Boxa.pos = Add(VScale(colN, extra * 0.2), Boxa.pos)
Boxb.pos = Add(VScale(colN, -extra * 0.2), Boxb.pos)

目前流行的物理引擎都是通過高級碰撞檢測技術即未發生刺穿前?

posted on 2008-01-15 16:41 楊粼波 閱讀(667) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品香蕉在线观看| 日韩一区二区久久| 日韩视频一区| 亚洲国产精品一区二区久| 国产亚洲欧美在线| 韩国欧美一区| 亚洲高清中文字幕| 亚洲精品日韩久久| 亚洲一本大道在线| 久久国产视频网站| 免费成人在线观看视频| 亚洲高清久久网| 亚洲国产精品成人一区二区| 亚洲人成在线播放网站岛国| av不卡在线观看| 午夜天堂精品久久久久 | 亚洲三级视频在线观看| 亚洲日产国产精品| 亚洲欧美日韩在线观看a三区| 国产伦精品一区| 亚洲自拍另类| 久久久青草婷婷精品综合日韩| 久久三级福利| 欧美日韩一区在线视频| 国产精自产拍久久久久久蜜| 激情成人亚洲| 野花国产精品入口| 久久精品国产v日韩v亚洲| 欧美成人自拍| 亚洲字幕一区二区| 欧美美女福利视频| 在线欧美视频| 久久精彩免费视频| 9l视频自拍蝌蚪9l视频成人| 久久亚洲精品一区| 国产精品亚洲精品| 一区二区欧美视频| 欧美成人免费在线| 新狼窝色av性久久久久久| 欧美区日韩区| 亚洲精品1区2区| 久久精品91久久久久久再现| 亚洲精品少妇| 看欧美日韩国产| 国产亚洲欧美日韩在线一区 | 欧美视频在线观看免费| 国产在线精品二区| 亚洲一区日韩| 一本色道久久综合亚洲精品不卡| 久久夜色精品亚洲噜噜国产mv| 国产精品免费区二区三区观看| 99国产精品| 亚洲丰满少妇videoshd| 久久三级福利| 在线国产精品播放| 免费欧美日韩| 久久综合一区二区| 亚洲电影下载| 欧美凹凸一区二区三区视频| 久久精品亚洲精品| 黄色精品在线看| 久久综合九色九九| 性做久久久久久免费观看欧美| 国产精品护士白丝一区av| 亚洲一区二区三区在线看| 亚洲精品视频在线观看网站| 欧美另类99xxxxx| 一区二区欧美精品| 亚洲视频1区| 国产日韩欧美| 久久午夜视频| 久久综合狠狠综合久久综青草| 精品999网站| 欧美肥婆在线| 欧美日韩美女| 久久aⅴ国产紧身牛仔裤| 欧美一区二区视频在线观看| 精品9999| 欧美刺激午夜性久久久久久久| 久久性色av| 亚洲人成毛片在线播放| 亚洲日本中文| 国产精品网站在线| 免费不卡在线观看av| 男男成人高潮片免费网站| 亚洲精品一线二线三线无人区| 亚洲精品视频二区| 国产一区二区成人久久免费影院| 老牛国产精品一区的观看方式| 免费久久精品视频| 亚洲欧美另类国产| 久久精品中文字幕一区| 亚洲精品在线视频观看| 一区二区三区高清视频在线观看| 国产欧美精品一区二区三区介绍| 欧美福利视频| 国产精品日韩专区| 欧美成ee人免费视频| 欧美视频导航| 欧美成人福利视频| 国产精品一区二区三区四区五区| 蜜桃av噜噜一区| 国产精品h在线观看| 久久久久久亚洲精品杨幂换脸| 欧美sm视频| 久久9热精品视频| 欧美日韩在线观看一区二区三区| 久久久久成人精品| 国产精品国产三级欧美二区| 欧美va日韩va| 国产一区白浆| 亚洲婷婷免费| 艳妇臀荡乳欲伦亚洲一区| 新67194成人永久网站| 制服丝袜激情欧洲亚洲| 久久蜜桃精品| 久久久久国产一区二区三区| 欧美日韩色一区| 欧美激情欧美激情在线五月| 国产欧美日本| 亚洲午夜高清视频| 一本色道久久综合亚洲精品不卡| 久久久久久穴| 久久久中精品2020中文| 国产精品久久久久久久久久三级 | 亚洲欧洲在线视频| 久久精品国产99| 久久国产精品久久久久久久久久 | 激情懂色av一区av二区av| 一区二区三区四区国产| 99国产精品视频免费观看一公开| 久久一区精品| 欧美在线亚洲一区| 麻豆精品传媒视频| 久久综合色影院| 老司机精品导航| 国产亚洲激情在线| 羞羞漫画18久久大片| 欧美一区二区视频97| 欧美午夜电影在线| 一区二区三区日韩在线观看| 在线亚洲欧美| 国产精品入口尤物| 亚洲欧美日韩在线不卡| 欧美在线免费看| 国产曰批免费观看久久久| 久久国产精品一区二区三区| 久久蜜臀精品av| 在线免费一区三区| 美女诱惑黄网站一区| 亚洲高清av| 亚洲中午字幕| 国产婷婷色一区二区三区在线 | 欧美午夜精品电影| 亚洲免费综合| 久久久久久穴| 亚洲狼人综合| 国产精品美女www爽爽爽视频| 亚洲在线成人精品| 久久国产欧美| 亚洲日本在线观看| 国产精品成人av性教育| 亚洲欧美一区二区三区久久| 久久人人爽人人| 一区二区三区产品免费精品久久75| 欧美日韩亚洲在线| 亚洲欧美在线免费| 欧美成人一区在线| 亚洲女人天堂成人av在线| 激情亚洲网站| 欧美午夜电影在线| 久久亚洲美女| 亚洲深夜福利在线| 欧美国产日韩一区| 欧美中文字幕| 日韩亚洲欧美成人| 国产一区二区三区黄| 欧美极品影院| 久久福利资源站| 亚洲视频久久| 欧美激情综合| 久久国产日本精品| 亚洲视频久久| 亚洲成色999久久网站| 欧美新色视频| 欧美粗暴jizz性欧美20| 午夜精品久久久久久99热| 亚洲国内精品| 欧美成人黑人xx视频免费观看| 亚洲一区在线观看免费观看电影高清 | 亚洲欧美成人网| 亚洲国产老妈| 国产在线不卡精品| 国产精品丝袜白浆摸在线| 欧美高清一区二区| 久久精品成人| 欧美影片第一页| 一区电影在线观看| 亚洲精品社区| 亚洲一级在线观看|