您所描述的内容是使用行列式概括的。
nD 对象嵌入到 nD 空间中
对于使用所有维度的对象,例如 2D 平行四边形或 3D 平行六面体,将定义(超)平行六面体边的 n 向量作为矩阵行并计算行列式:
2D 3D 4D 5D
|x1 y1| |x1 y1 z1| |x1 y1 z1 w1| (Repeat the same pattern)
|x1 y2| |x2 y2 z2| |x2 y2 z2 w2|
|x3 y3 z3| |x3 y3 z3 w3|
|x4 y4 z4 w4|
请注意,获得的(超)体积是有符号的,具体取决于向量的方向。因此,可能会有负数。
(n-1)D 对象嵌入到 nD 空间中
对于使用比其所在空间小一维的对象,例如 3D 空间中的平行四边形,您可以使用叉积(源自行列式)或叉积的推广。例如,由两个 3D 向量 (x1,y1,z1) 和 (x2,y2,z2) 定义的嵌入 3D 的平行四边形的面积是从包含这两个向量作为行的矩阵计算得出的:
[x1 y1 z1]
[x2 y2 z2]
从这个矩阵中,简单地创建 2x2 子矩阵的所有组合,计算每个矩阵的行列式,并将它们放入一个向量中
[|y1 z1|, |z1 x1|, |x1 y1|] = (y1*z2-z1*y1, z1*x2-x1*z2, x1*y2-y1*x2)
[|y2 z2| |z2 x2| |x2 y2|]
你得到一个向量,这个向量的长度就是平行四边形的面积:sqrt((y1*z2-z1*y1)^2 + (z1*x2-x1*z2)^2 + (x1*y2-y1*x2)^2)。
(几乎)终极概括
从最后一个示例中,我们可以创建一个适用于嵌入任何维度的任何对象的通用配方(是的,您可以计算嵌入 17D 空间中的 3D 平行六面体的体积):
- 将描述对象的所有向量作为(可能是非正方形)矩阵的行。
- 枚举所有可能的平方子矩阵组合。
- 计算所有这些子矩阵的行列式并将它们放在一个列表中(如果您想要的只是数量,那么顺序并不重要)。
- 分别对这些行列式进行平方。
- 把它们加起来。
- 取结果的平方根。
请注意,最后一个配方给出了无符号体积,因为你先平方然后取平方根。
最后说明:显然,这个答案更像是一个秘诀,而不是解释为什么所有这些计算都有效。有关此主题的更多信息,我建议您查看Exterior Algebra,这是一种使用楔积(叉积的概括)来定义这些超卷的形式很一般的方法。