C++ 从D3DXTRI获取世界坐标

C++ 从D3DXTRI获取世界坐标,c++,directx,C++,Directx,我有一个正方形区域,我必须确定鼠标指向的位置。 使用D3DXTRI,我可以判断鼠标是否指向它,但我无法计算x、y、z坐标 使用顶点数组初始化的顶点缓冲区中的图形: vertices[0].position = D3DXVECTOR3(-10, 0, -10); vertices[1].position = D3DXVECTOR3(-10, 0, 10); vertices[2].position = D3DXVECTOR3( 10, 0, -10); vertices[3].positi

我有一个正方形区域,我必须确定鼠标指向的位置。
使用D3DXTRI,我可以判断鼠标是否指向它,但我无法计算x、y、z坐标

使用顶点数组初始化的顶点缓冲区中的图形:

vertices[0].position = D3DXVECTOR3(-10, 0,  -10);
vertices[1].position = D3DXVECTOR3(-10, 0,   10);
vertices[2].position = D3DXVECTOR3( 10, 0,  -10);
vertices[3].position = D3DXVECTOR3( 10, 0,  -10);
vertices[4].position = D3DXVECTOR3(-10, 0,   10);
vertices[5].position = D3DXVECTOR3( 10, 0,   10);
到目前为止,我有这种方法,但这并没有给我正确的坐标(仅适用于区域的一小部分,靠近两条边,内部更不精确):


重心坐标的工作方式与使用它们的方式不同。u和v定义源向量的权重。所以如果你想计算生命点,你必须计算

coord = u * p1 + v * p2 + (1 - u - v) * p3
或者,也可以使用d射线参数:

coord = rayOrigin + d * rDirection

两种方法都应该得到相同的坐标。

重心坐标的工作方式与使用它们的方式不同。u和v定义源向量的权重。所以如果你想计算生命点,你必须计算

coord = u * p1 + v * p2 + (1 - u - v) * p3
或者,也可以使用d射线参数:

coord = rayOrigin + d * rDirection
两种方式应产生相同的坐标