我正在3D空间中工作。我有一条射线,或者更具体地说,是3D空间中光线的起始和透射向量。我也有一个三角形,我知道这个三角形是被射线击中的。用三角形表示我有三个三维点。我也可以很容易地计算出这个三角形的法线向量。在3D空间中反射三角形上的光线
现在我需要得到一个新的射线,这将是特定命中后的反射。
我也不知道三角形的接触点在哪里,但显然必须考虑到获得反射光线。那一点将成为新射线的开始。
这在2D中很容易做,但我无法弄清楚如何在3D中做到这一点。
我使用C++和OpenFrameworks与ofxRay附加组件。
一对于矢量代数,你喜欢增加两个矢量还是采用点积? – Beta
一个有用的思考方式可能是这样的:平面的法线(三角形)和光线一起形成一个平面。在这个平面上,您可以检索您熟悉的2D问题。所以,你可以找到这个二维空间,解决那里的问题,然后转换回来。这将在数学上等同于矢量代数公式(如@Beta指出的),这可能是最有效的(或至少在计算上是直接的)解决方法。 – jwimberley