Three.js你如何从向量和常数得到一个平面?

时间:2016-07-29 18:10:23

标签: three.js plane

在three.js中,Math Plane的构造函数需要2个输入:

normal - (Vector3)法线向量定义指向原点的平面

常数 - (浮点)沿法线向量从原点到平面的负距离

有人可以提供插图或说明其工作原理吗?我可以理解给定一个点和法线如何构造一个平面,或3个共面点,但不能弄清楚如何使用法向量和常数。

1 个答案:

答案 0 :(得分:2)

TL:DR
Mathy-ness和线性代数

因此,三维空间中的平面可以定义为一个二维无限矩形,落在3个点上(你知道的)

它也可以通过垂直(法线)矢量和距离平面起源距离的常数来定义。

Three.js取法线向量(垂直于你想要的平面的向量)并基本上应用线性代数来找到平面,然后将它移动距离原点恒定的距离。

数学计算说明: 如果我们有一个正交(垂直)的向量A和B,那么它们的点积是0.所以如果我们使用这个原理,我们实际上可以采用一个已知的向量X并找到2个正交向量Y和Z,这将是共面的(由于正交性质)通过向后求解X(点)Y = 0和X(点)Z = 0 现在我们有2个共面矢量来制作我们的平面,我们将常数的距离设置为远离原点

(想想矢量如何有一个原点和一个终点。如果共面矢量共享一个原点,那么我们有3个点:2个结束,1个原点,也就是3个点来制作一个平面。)

数学理论解释为什么提前工作:
我不能画得很好(没有笔和纸来展示),但基本上,想想3D空间中的矢量。现在想想所有可以垂直的向量。基本上,这会产生无限量的垂直向量,这些向量在垂直于原始的圆周中旋转,如果我们无限地跨越它们,我们就创建了一个平面。

如果您有机会参加线性代数课程,我会强烈推荐它。它非常有趣,与计算机图形非常相关,并解释了THREEjs使用的大量3D空间数学