1. 程式人生 > >Bullet 物理引擎學習筆記(1) -- HelloWorld 詳解

Bullet 物理引擎學習筆記(1) -- HelloWorld 詳解

本文將對 Bullet 例程 HelloWorld 中的各語句,分析其內部的操作過程。

首先是包含了標頭檔案:

#include "btBulletDynamicsCommon.h"

1、首先定義了用於配置碰撞的 btCollisionConfiguration 物件:

///collision configuration contains default setup for memory, collision setup. Advanced users can create their own configuration.
    btDefaultCollisionConfiguration* collisionConfiguration = new
btDefaultCollisionConfiguration();

btDefaultCollisionConfiguration 類繼承自 btCollisionConfiguration 類,其主要有4個函式介面:

///memory pools
    virtual btPoolAllocator* getPersistentManifoldPool() = 0;

    virtual btPoolAllocator* getCollisionAlgorithmPool() = 0;


    virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int
proxyType0,int proxyType1) =0; virtual btCollisionAlgorithmCreateFunc* getClosestPointsAlgorithmCreateFunc(int proxyType0, int proxyType1) = 0;

物件 collisionConfiguration 只用於初始化 btCollisionDispatcher 物件,作為其建構函式的引數;雖然在 btDiscreteDynamicsWorld 類的建構函式中也有該引數,但查詢程式碼中並未應用該引數。

2、定義 btCollisionDispatcher

物件:

///use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded)
    btCollisionDispatcher* dispatcher = new btCollisionDispatcher(collisionConfiguration);

關於 btCollisionDispatcher 類的作用,留待後續解釋。其由 collisionConfiguration 初始化的物件,賦給 btDiscreteDynamicsWorld::btDynamicsWorld::btCollisionWorld::m_dispatcher1

3、定義 btBroadphaseInterface 物件:

///btDbvtBroadphase is a good general purpose broadphase. You can also try out btAxis3Sweep.
    btBroadphaseInterface* overlappingPairCache = new btDbvtBroadphase();

關於 btBroadphaseInterface 類的作用,留待後續解釋。其賦給 btDiscreteDynamicsWorld::btDynamicsWorld::btCollisionWorld::m_broadphasePairCache

4、
m_constraintSolver

本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦:

  • Markdown和擴充套件Markdown簡潔的語法

  • 程式碼塊高亮

  • 圖片連結和圖片上傳

  • LaTex數學公式

  • UML序列圖和流程圖

  • 離線寫部落格

  • 匯入匯出Markdown檔案

  • 豐富的快捷鍵

快捷鍵

  • 加粗 Ctrl + B

  • 斜體 Ctrl + I

  • 引用 Ctrl + Q

  • 插入連結 Ctrl + L

  • 插入程式碼 Ctrl + K

  • 插入圖片 Ctrl + G

  • 提升標題 Ctrl + H

  • 有序列表 Ctrl + O

  • 無序列表 Ctrl + U

  • 橫線 Ctrl + R

  • 撤銷 Ctrl + Z

  • 重做 Ctrl + Y

Markdown及擴充套件

Markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的HTML頁面。 —— [ 維基百科 ]

使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立一個連結等,詳細語法參考幫助?。

本編輯器支援 Markdown Extra ,  擴充套件了很多好用的功能。具體請參考Github.

表格

Markdown Extra 表格語法:

專案 | 價格

——– | —

Computer | $1600

Phone | $12

Pipe | $1

可以使用冒號來定義對齊方式:

| 專案 | 價格 | 數量 |

| :——– | ——–:| :–: |

| Computer | 1600 元 | 5 |

| Phone | 12 元 | 12 |

| Pipe | 1 元 | 234 |

定義列表

Markdown Extra 定義列表語法:

專案1

專案2

定義 A

定義 B

專案3

定義 C

定義 D

定義D內容

程式碼塊

程式碼塊語法遵循標準markdown程式碼,例如:


@requires_authorization

def somefunc(param1='', param2=0):

    '''A docstring'''

    if param1 > param2: # interesting

        print 'Greater'

    return (param2 - param1 + 1) or None

class SomeClass:

    pass

>>> message = '''interpreter

... prompt'''

腳註

生成一個腳註1.

目錄

[TOC]來生成目錄:

數學公式

  • 行內公式,數學公式為:Γ(n)=(n1)!nN

  • 塊級公式:

x=b±b24ac2a

更多LaTex語法請參考 這兒.

UML 圖:

可以渲染序列圖:

Created with Raphaël 2.1.0張三張三李四李四嘿,小四兒, 寫部落格了沒?李四愣了一下,說:忙得吐血,哪有時間寫。

或者流程圖:

Created with Raphaël 2.1.0開始我的操作
  • 關於 序列圖 語法,參考 這兒,

  • 關於 流程圖 語法,參考 這兒.

離線寫部落格

即使使用者在沒有網路的情況下,也可以通過本編輯器離線寫部落格(直接在曾經使用過的瀏覽器中輸入write.blog.csdn.net/mdeditor即可。Markdown編輯器使用瀏覽器離線儲存將內容儲存在本地。

使用者寫部落格的過程中,內容實時儲存在瀏覽器快取中,在使用者關閉瀏覽器或者其它異常情況下,內容不會丟失。使用者再次開啟瀏覽器時,會顯示上次使用者正在編輯的沒有發表的內容。

部落格發表後,本地快取將被刪除。 

使用者可以選擇 把正在寫的部落格儲存到伺服器草稿箱,即使換瀏覽器或者清除快取,內容也不會丟失。

注意:雖然瀏覽器儲存大部分時候都比較可靠,但為了您的資料安全,在聯網後,請務必及時發表或者儲存到伺服器草稿箱

瀏覽器相容

  1. 目前,本編輯器對Chrome瀏覽器支援最為完整。建議大家使用較新版本的Chrome。

  2. IE9以下不支援

  3. IE9,10,11存在以下問題

    1. 不支援離線功能

    2. IE9不支援檔案匯入匯出

    3. IE10不支援拖拽檔案匯入

  1. 這裡是 腳註內容.

相關推薦

Bullet 物理引擎學習筆記1 -- HelloWorld

本文將對 Bullet 例程 HelloWorld 中的各語句,分析其內部的操作過程。 首先是包含了標頭檔案: #include "btBulletDynamicsCommon.h" 1、首先定義了用於配置碰撞的 btCollisionConfigur

Lua學習筆記1: HelloWorld和資料型別

Lua是一個輕量級的指令碼語言,由c語言編寫,容易嵌入到應用中,深受遊戲開發者的青睞 環境安裝 選用SciTE作為lua的IDE 可以在github找到這個開源的軟體 SciTE下載連結 安裝好之後開啟 環境搭建完成 HelloWorld Fil

C# 指南學習筆記1-HelloWorld,字串內插

使用 Visual Studio 2017 生成 C# .NET Core Hello World 應用程式:https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/with-visual-studio

Python3爬蟲學習筆記1.urllib庫

1.什麼是爬蟲:略,到處都有講解。 雖然是入門,不過沒有Python基礎的同學看起來可能費勁,建議稍學下Python 之前學習前端知識也是為了能看懂HTML,便於爬蟲學習,建議瞭解下前端知識 2.re

Java學習筆記1——HelloWorld

檔名需與類名一致 Java儲存的檔名必須與類名一致; 如果檔案中只有一個類,檔名必須與類名一致; 一個Java檔案中只能有一個public類; 如果檔案中不止一個類,檔名必須與public類名一致; 如果檔案中不止一個類,而且沒有public類,檔名可與任一

PHP7 學習筆記十三composer

導出 php開發 HR build osi oschina sni 區別 優秀 摘要   從拷貝第三方代碼到項目中(1994),到PEAR安裝依賴包(1999),再到Composer興起(2012),PHP社區經歷了將近20年的探索。PHP這門古老的語言,也在不斷的發展更新

Java學習筆記31--介面

一、基本概念 介面(Interface),在JAVA程式語言中是一個抽象型別,是抽象方法的集合。介面通常以interface來宣告。一個類通過繼承介面的方式,從而來繼承介面的抽象方法。 如果一個類只由抽象方法和全域性常量組成,那麼這種情況下不會將其定義為一個抽象類。只會定義為一個介面,所以介面嚴格的來

SpringMVC學習筆記 切面

為了更好的理解AOP,先來了解幾個AOP的術語。 通知(Advice) 指切面(定義為aspect的類)中的工作; spring切面可以應用的五種通知: 前置通知(Before):在目標方法被呼叫之前呼叫通知功能; 後置通知(After):在目標方法完成之後呼叫通知,此時

JAVA學習筆記1——a++與++a的區別

col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3

vray學習筆記1

com .cn 過程 分組 是把 皮膚 mon image 基本 vray是個什麽東西? 它是個渲染器。 渲染器是個什麽東西? 渲染器就是3d軟件裏面把模型畫成一張圖片的東西,渲染的過程就是把3D物體變成2D畫面的過程。 模型是個什麽東西? 模型就是模型,它由兩部分組成,第

《深入理解C指針》學習筆記1--- 指針之外

結構 def form 學習 編程 stdlib.h struct 一個 char   C語言從誕生之初就非常善於和硬件打交道,經過這麽多年的發展之後,其靈活性和超強的特征是受到幾乎所有程序員的肯定。C語言的這種靈活性很大一部分程度來源與C指針,指針為C語言動態操控內存提供

CS231n 學習筆記1 Image CLassification

eight function 分享 便是 數據驅動 rain 分類問題 很難 特征 圖像分類是計算機視覺中的一項核心任務,那麽什麽是圖像分類? 例如,給你一個標簽集,其中包括(貓、狗、鳥、卡車、飛機...等) 然後給你一張圖片,那麽這張圖片屬於哪個類別呢?這就是一個分類

bootstrap 學習筆記1---介紹bootstrap和柵格系統

優先 cal 圖片 應用 尺寸 文件中 lin png ice   學習前端許久,對於布置框架和響應瀏覽器用html 和javascript 寫的有點繁瑣,無意間看到這個框架,覺得挺好用的就開始學習了,但是這個框架上面有很多知識,不是所有的都要學的,故將學習筆記和覺得重點的

《挑戰程序設計競賽》學習筆記 1

設計 allow 而且 硬幣 ack ket 程序設計 all 不能 2.2 貪心法 貪心法是遵循某種規則,不斷貪心選取當前最優策略的算法設計方法。 貪心法的求解思想是通過叠代地選取當前問題的局部最優解法來達成總體最優解,在叠代的過程中不斷地產生局部最優解和下一個與之前

AngularJs學習筆記1——ng-app

oot you ctrl span fun 代碼 問題 筆記 doctype 眾所周知: ng-app 指令用於告訴 AngularJS 應用當前這個元素是根元素。 所有 AngularJS 應用都必須要要一個根元素。 HTML 文檔中只允許有一個 ng-app 指令,如果

Nordic nRF52832 學習筆記1 介紹,入門,與準備工作

例程 盜版 path pdf 規範 準備 但是 依然 可能   近來,物聯網已成為大勢所趨,VR與AR正方興未艾,各種手環、遙控、智能家居也在粉墨登場。技術前沿的領航者們已經快馬加鞭,各種意誌與暗示也在上傳下達。物聯網,無線通訊,移動互聯,將成為新的目標與寵兒。最近開的電賽

javascript 高級程序設計學習筆記1

元素 新的 logs html light begin 知識 gin nbsp 知識補充: var box = document.querySelector(‘#box‘); //"beforebegin" ,在當前元素之前插入一個緊鄰的同輩元素; box.ins

Postgresql 學習筆記1

sql postgre 一、環境#配置遠程連接 su postgres vim /var/lib/pgsql/9.4/data/postgresql.conf 編輯配置文件 listen_address=’localhost’ 前面的註釋#去掉,並把’localhost’該為’*’;

Hibernate學習筆記1---hibernate快速上手與準備工作

成了 -- 開源 工作 快速 tar ref orm 磁盤 持久層介紹 持久化:將內存中的數據保存在磁盤等存儲設備中。 持久化對象:指已經存儲在數據庫護著磁盤的業務對象 經典的軟件應用體系結構(三層結構) 在三層結構中,由於業務邏輯除了負責業務邏輯以外,還要負責相關的數據

jQuery源碼學習筆記1

ase tolower nodetype apt jquer 元素 bre 技術分享 停止 在慕課網上學習jQuery源碼,做一些筆記小研究。 第1章 節點遍歷 第2章 文檔處理 第3章 元素操作 第4章 樣式操作 第5章 事件體系 第6章 數據交互 第7章