如何在平面上获得3D点(表示为法线并从原点偏移)?

时间:2012-11-17 22:50:32

标签: game-engine computational-geometry game-physics raytracing

如果我知道光线和光线,我知道如何获得光线和平面之间的交点 飞机上的一个点,平面正常。

在我使用的代码中,平面表示为从原点开始的带符号偏移,和普通,和I. 需要得到飞机上的任何一点。怎么做?

所以,平面方程:Ax + By + Cz + D = 0,我知道A,B和C,基本上是 飞机的法线,我知道D,这是与原点的符号距离。和 我的问题是,我如何在飞机上获得一些3D点?

由于

2 个答案:

答案 0 :(得分:0)

通过将光线与光线(线)相交来获得一个平面点:-)

选择一些点P=(x,y,z),计算w=Ax+By+Cz

如果飞机上有w=-D而不是P

对于w!=-D,请选择Q=(dx,dy,dz)的某个方向l=Adx+Bdy+Cdz!=0,例如q=(A,0,0)B!=0C!=0。比点P+l*Q/w在飞机上。

答案 1 :(得分:0)

如果(A,B,C)是归一化向量,那么最接近原始的平面上的点就是:

( - AD,-BD,-CD)

从描述中可以很容易地知道(A,B,C)是平面法线,D是平面和原点之间的距离。

这种方法很简单,不需要任何分支。

Point on plane closest to origin