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

Three.js How do you get a Plane from a vector and a constant?

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

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

constant -- (Float)原点到平面沿法向量的负距离

有人可以提供插图或解释这是如何工作的吗?我可以理解给定一个点和法线如何构造一个平面,或 3 个共面点,但无法弄清楚如何使用法向量和常量。

TL:DR?
数学和线性代数

所以 3 维平面 space 可以定义为落在 3 个点上的 2 维无限矩形(你知道的)

它也可以由垂直(法线)向量和平面距原点多远的常数定义。

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

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

(想想向量如何有原点和端点。如果共面向量共享一个原点,那么我们有 3 个点:2 个端点和 1 个原点,也就是 3 个点构成一个平面。)

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

如果你有机会学习线性代数 class,我会强烈推荐它。非常有趣,与计算机图形学非常相关,并且解释了THREEjs使用的很多3D space数学