どのように地形データ上の点の傾きを計算する(例えば、デジタル標高マトリックス)
-
20-09-2019 - |
質問
私は、3Dカーレースゲームを実装したいと私は大きさと地形上の任意の点の傾きの方向を近似する必要があります。
地形データ形式:
- 高さ[] []:フロート(メートルで高さを表す)の2次元アレイ
- 単位:(i、j)の間の水平方向の単位距離 - (J、I)(I、J + 1)との間に - (I + 1、J)メートル単位
例:
3|1311
2|2542 <-- 2D array of heights in meters
1|2231 (unit distance between two cell is, say, 1 meters)
0|1121 (so the highest point of the terrain (x = 1.5 meters, y = 2.5 meters)
---- is 5 meters high)
0123
点における傾きの値及び方向は何である、たとえば、(x = 1.75メートル、Y = 2.25メートル)
あなたの補間アルゴリズムとは何でしょうか?
解決
もちろん直線的にあなたの実際のxの値より低いと高くなっていることに、すなわち最初のx座標のyの値を補間、xとy軸の両方に沿って2回を補間することができ - yの1時間は実際よりも低く座標yの値と実際のyの値よりも高いy値のための1時間。これはあなたが直線的に高さを得るために間を補間できる2つのyの値を与えます。
あなたはその時点で通常のを見つける必要がある斜面を見つけるために。通常のを見つけるには、同じ方法で補間を行うことができます。 (X1、Y1)、B:(X2、Y1)、C(X2、Y2)及びD:(X1、Y2)、X1 直線の高さと同じように、通常のを補間します。この例ではアップは、単にアップベクトルでアップ、( - その後、S = Nで計算されることを、私はあなたが斜面をしたいどのような形式ではわかりませんが、あなたは斜面の方向にベクトルポインティングをしたい場合あなたがアップしてます。 別のアプローチは、ABDとBCD例えば三角形に正方形をtesselateすることであろう。全体の三角形の通常は、その後、AB第X ADあろうとBCは、それぞれBDをxは。その場合には、 http://www.ccを見てみましょう。三角形の高さを補間する方法についてのインスタンスのgatech.edu/classes/AY2007/cs3451_spring/lininter.pdfする。このアプローチは、あなたのスムーズな三角形を与えるが、隣接する三角形間の傾斜の顕著な違いがあります。