Xna 计算光线长度的斜边

Xna 计算光线长度的斜边,xna,.net-4.5,Xna,.net 4.5,我肯定这对某些人来说很简单,但我对三角学不太在行 正如标题所说,我试图计算一个三角形的斜边,给定相机和模型的边界框之间的距离浮动,以及光线移动的方向 更好的解释图片: 将“开始位置”视为0,0。 那么你的射线尖端在(Rx,Ry)。 这形成了一个类似于大三角形的三角形(见下图) 所以你知道小三角形的高宽比和大三角形的高宽比是一样的。所以这是真的: Dy/Dx=Ry/Rx 由于您知道Dx、Ry和Rx,因此可以求解Dy: Dy=Dx*Ry/Rx 现在,您可以使用以下工具找到所需的长度: L=sqrt(

我肯定这对某些人来说很简单,但我对三角学不太在行

正如标题所说,我试图计算一个三角形的斜边,给定相机和模型的边界框之间的距离浮动,以及光线移动的方向

更好的解释图片:

将“开始位置”视为0,0。 那么你的射线尖端在(Rx,Ry)。 这形成了一个类似于大三角形的三角形(见下图)

所以你知道小三角形的高宽比和大三角形的高宽比是一样的。所以这是真的: Dy/Dx=Ry/Rx

由于您知道Dx、Ry和Rx,因此可以求解Dy:

Dy=Dx*Ry/Rx

现在,您可以使用以下工具找到所需的长度:

L=sqrt(Dx^2+Dy^2)


是否已知
可能不相关的值?如果是的话,就用毕达哥拉斯定理。如果不是的话,你可以用角边角来求三角形的面积。这个问题似乎是离题的,因为它是关于数学的,与编码没有直接关系。看来你所知道的只是“命中”。但要确定“开始位置”和“结束位置”之间的距离,您还需要知道:“角度”或“可能的i错误值”或“结束位置”。没有这些,炒作就无法确定。但在2d游戏编程中,很少有人不知道其中的一个。首先,很抱歉没有更清楚它与编码的相关性。其次,ASA函数如何用c#编写?另外,这是一个3D游戏,在2D平面上有一条光线。当光线的方向已知时,可能会找到角度。问题是我找不到Rx。我有Dx,可以得到L的方向,但不知道Dx的比例,以找到Rx,这样它仍然与y和Dy成正比。你说“可以得到L的方向”是什么意思?这是从摄影机的角度吗?你说是雷。射线是一个方向,它有一个X和Y值。请帮助我了解您从何开始,我将更新我的答案。假设我的相机位于(0,0)位置,就像您在那里一样。我投射出一道永远无限长的光线。在那个方向的某个地方,更低或更高,是一个三维边界框。我需要找到光线开始的位置(相机的位置)和光线垂直(或水平)与边界框的第一个点相交的位置之间的长度。我有从摄影机到边界框点的长度,但由于对角线的原因,该长度与从光线到边界框的长度不同。