首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3d heightmap地形和碰撞检测

3d heightmap地形和碰撞检测
EN

Stack Overflow用户
提问于 2012-09-14 07:26:04
回答 2查看 1.3K关注 0票数 0

三维地形。

我有3个顶点来定义一个平面。(高度贴图中最近的3个像素)

我在那架飞机上有个x,z。(我在世界上的位置)

你如何找到y-intercept?(这样我就站在那个平面的表面上)

EN

回答 2

Stack Overflow用户

发布于 2012-09-14 07:36:48

平面的方程式是:

A_x + B_y + C_z = D,其中D= A_x0 + B_y0 + C_z0,

如果您有三个顶点,请从这些顶点中找到两个向量。例如,对于三个顶点T、U、V,将有一个向量TU和一个向量UV

求出这两个向量的叉积。这是你的法向量n,它有三个分量n1,n2和n3。

代码语言:javascript
复制
A = n1
B = n2
C = n3

取其中的一点。该点的坐标是x0、y0和z0。

将此输入到方程式中以计算D。

然后将x和z替换为x和z,并求解y!

所以最后的y是:

代码语言:javascript
复制
y = (A*x0 + B*y0 + C*z0 - A*x - C*z)/B

如果我的代数有误,谁来纠正我。

你可以这样计算叉积:

对于分别具有分量a1、a2、a3和b1、b2、b3的两个矢量ab,其叉积为:

它将发送到:

A= i-hat的系数(加粗的i)

B= j-hat的系数(加粗的j)

C= k-hat的系数(加粗的k)

票数 2
EN

Stack Overflow用户

发布于 2012-09-16 16:19:19

您说您正在查看高度图中最近的三个像素,这让我假设您有一个规则的网格,您可以从中提取顶点。在这种情况下,您可以使用图像插值方法来执行与eboix或bicubic插值的答案类似的linear。然后,您的高度值等于图像处理域中的亮度值。在线性情况下,数学计算要容易得多,并且网格结构使得使用简单的形式成为可能。设c为像元大小,p,q,r为3个顶点的高度值,如下所示

代码语言:javascript
复制
p    q
 +--.
 | /
 |/
r

x和y表示直角三角形边的距离。三角形当然是3个顶点在x,y平面上的投影。则插值高度值为

代码语言:javascript
复制
z = (q-p)/c * x + (r-q)/c * y
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12416195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档