在3D空间中的三角形上反映射线

Reflecting ray on triangle in 3D space

本文关键字:映射 三角形 3D 空间      更新时间:2023-10-16

我在3D空间中工作。我有一个射线,或更具体地说是3D空间中射线的启动和传输向量。我也有一个三角形,我知道这是一个事实被射线击中。当然,由三角i表示我有3个3D点。我还可以轻松地从这个三角形计算一个普通向量。

现在我需要获得一条新射线,这将是该特定命中后的反射。

我也不知道在三角形上的接触点在哪里,但显然必须考虑到它才能获得反射的射线。这一点将是那个新射线的开始。

这是在2D中做的微不足道,但我不知道如何在3D中做到这一点。

我正在使用ofxray附加组件使用C 和OpenFrameWorks。

此问题将两个问题分解为两个问题:找到射线符合三角形的点 - 这是反射射线的起源点 - 并找到的方向(向量(反射的射线。

让三角形的正常向量为 n 。描述三角形平面的方程为

nx = k

您可以通过将其中一个三角顶点插入该方程来确定K。事件射线的方程为

X = t V P

其中 p 是射线的原点, v 是其(归一化(方向。要找到射线的交点点,只需求解这对方程,这归结为解决

n (T V P (= K

对于t,然后将其插入射线的方程式中。

要找到反射射线的方向,我们必须逆转与三角形的正常平行的入射射线的分量:

V r = v 2( VN (P>

(注意标志 - 我假设正常人从射线击中的脸上指出。(