簡體   English   中英

3d高度圖地形和碰撞檢測

[英]3d heightmap terrain and collision detection

3d地形。

我有3個定義平面的頂點。 (高度圖中最近的3個像素)

我在那架飛機上有一個x,z。 (我在世界上的位置)

你如何找到y截距? (所以我站在那架飛機的表面)

飛機的等式是:

A x + B y + C z = D,其中D = A x0 + B y0 + C z0,

如果您有三個頂點,請從頂點中找到兩個向量。 例如,對於三個頂點T,U,V,將存在例如矢量TU和矢量UV

找到兩個向量的叉積。 那是你的法向量n ,它有三個分量n1,n2和n3。

A = n1
B = n2
C = n3

取其中一點。 該點的坐標是x0,y0和z0。

將此輸入到等式中以計算D.

然后用x和z替換x和z並求解y!

所以到底y是:

y = (A*x0 + B*y0 + C*z0 - A*x - C*z)/B

如果我的代數錯了,有人會糾正我。

您可以像這樣計算交叉積:

對於兩個向量ab ,分別具有組分a1,a2,a3和b1,b2,b3,叉積為:

在此輸入圖像描述

其中:

在此輸入圖像描述

A = i-hat系數(加粗i)

B = j-hat系數(加粗j)

C = k-hat的系數(粗體k)

你說你正在查看高度圖中最近的三個像素,這使我假設你有一個從中提取頂點的常規網格。 在這種情況下,您可以使用圖像插值方法執行類似於eboix或雙三次插值的答案的線性 然后,您的高度值等於圖像處理域中的亮度值。 線性情況下的數學運算要容易得多,網格結構可以使用簡單的形式。 設c為您的單元格大小,p,q,r為3個頂點的高度值,如下所示

p    q
 +--.
 | /
 |/
r

和x,和y,你的直角三角形的腿的距離。 三角形當然是3個頂點在x,y平面上的投影。 然后你的插值高度值是

z = (q-p)/c * x + (r-q)/c * y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM