日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏中的物理与数学(一):物体运动算法的实现

發布時間:2024/8/26 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏中的物理与数学(一):物体运动算法的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(看了《游戲開發的數學與物理》,感覺很不錯,記下點東西。 這是本“圖靈程序叢書”,對于這個系列的書,我一直是蠻喜歡的,感覺書的內容、排版等,都讓人看著很舒服。)

1.1讓物體沿水平方向運動

了解勻速直線運動(最簡單的運動),若左邊為x,速度為v,則:x+=v,v=-v。

注意: 注意物體的中心點,不同的游戲引擎,可能設計的中心點不同,而中心點不同,邊界也就不同。

1.2通過鍵盤控制物體的運動

主要用到小學學的勾股定理,原理很簡單,而且很實用。

PS: 在模擬運動時,要控制個方向的速度。

1.3讓物體沿任意方向運動
?


注1:請將角的單位統一為弧度(主要關系到微積分的一些問題)。

注2:在計算浮點數中,計算機不可避免的會有誤差,絕對值越大誤差也就越大。因此應該盡可能地使用絕對值小的數字進行計算。

1.4在物體運動中加入重力
?

  • y += vy;? ?? ? //對位置加入速度??
  • vy +=G;? ?? ? //為速度加上加速度??
  • 復制代碼


    用此方法算的Vy與y分別是:
    ?


    計算機所使用的重力加速度單位是特殊的 dot/F^2 (像素/平方幀)

    但是對于真實的情況,我們用積分模擬
    ?


    這樣就和前面代碼所表示的存在一些誤差,則代碼應該改成:
    ?

  • v=vx*t;? ?? ?? ?? ?? ?? ? //x方向的位置??
  • y=1/2*G*t*t+vy*t+y0;? ?? ?//y方向的位置??
  • 復制代碼


    1.5物體隨機飛濺運動

    隨機數、均勻隨機數、正態分布 ——>火山噴發、煙花、摩擦迸出的火花。

    產生隨機速度的部分:
    ?

  • Balls[i].vx = rand()*Screen_width/(float)RAND_MAX - Screen_width/2.0f;? ?? ?? ?? ?? ?//vx的初始值??
  • Balls[i].vy = rand()*Screen_height/(float)RAND_MAX - Screen_height/2.0f - Base;? ?? ?//vy的初始值??
  • 復制代碼


    生成了均勻隨機數(所有數字的出現概率都相等的隨機數),其中,Screen_width 和 screen_height 分辨是屏幕的寬和高。而vx與vy生成的初始值的范圍分別為(-Screen_width/2.0 ~ Screen_width/2.0) 和 (-Base - Screen_height/2.0f ~ -Base+Screen_height/2.0)。

    1.6讓物體進行圓周角運動
    ?

  • x=R*cosf(fAngle)+(Screen_width-Char_width)/2.0f;??
  • y=R*sinf(fAngle)+(Screen_Height-Char_height)/2.0f;??
  • fAngle+=2.0f*PI/120.0f;? ?? ? //一周的時間為2min??
  • 復制代碼


    所以物體施加一個指向某一點的角速度為ω的力,賣手機靚號平臺物體就會圍繞該點做圓周運動。

    把t=0代入上面兩式得初始時間與速度:

  • //使用向心力的圓周運動,決定初始位置及初始速度的部分??
  • rx=R;??
  • ry=0.0f;? ?? ?? ?? ?? ?? ?? ?? ?? ? //(r,0)??
  • vx=0.0f;??
  • vy=R*AngleSpeed;? ?? ?? ?? ?//(0,rw)??
  • 復制代碼


    1.7[難]微分方程式及其數值解法

    常用:微分方程的數學值解法;??歐拉法
    ?


    但是球類等運動,需要更高精度,則有以下幾種方法

    使用精度更高的高階近似求解微分方程,eg,Runge-Kutta methods 。(數學難)

    使用線性多步法(Linear multistep method)計算,即不光使用前一次的值,還使用前兩次或更多次的值進行計算, eg,Adams-Bashforth等。

    在一幀內多次使用歐拉法計算,縮小t——重復使用歐拉法,比較常用。

    總結

    以上是生活随笔為你收集整理的游戏中的物理与数学(一):物体运动算法的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。