我想实现一个3D赛车游戏,我需要近似的幅度和任意点的地形上斜坡的方向。

地形数据格式:点击 - 高度[] []:浮子(表示以米为单位的高度)的2D阵列,点击 - 单元:间(I,J)的水平单位距离 - (I,J + 1)之间(I,J) - (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轴和y轴两插,即先内插的X坐标是比你的实际x值较低和较高的两倍y值 - 坐标比你的实际低一个时间用于Y Y值和一个时间比你的实际的y值较高的y值。这给了你,你可以线性之间插值得到高度的两个Y值。

为了找到你需要找到正常该点处的斜率。为了找到正常的,你可以做,然后以同样的方式进行插值。 (X1,Y1),B:(X2,Y1),C:(X2,Y2)和d:(X1,Y2),X 1

线性插入正常以同样的方式作为用于高度。我不知道你想要的是什么坡格式,但如果你想在斜坡的方向的矢量指向,那就会按照S = N计算 - 最多,最多仅仅是向上向量(在这个例子中(0,0,1),因为使用的是将z作为起来。

另一种方法是,以平方tesselate成三角形,ABD和BCD为实例。然后,正常为整个三角形将AB X AD和BC分别X BD。在这种情况下,看看 http://www.cc。 gatech.edu/classes/AY2007/cs3451_spring/lininter.pdf 例如如何插在三角形的高度。这种方法使你平滑三角形,但在相邻三角形之间的斜率显着差异。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top