任意维度的无限体积的交点



我需要代码/文本/谷歌关键字/其他资源来实现这个类。速度并不重要。它应该适用于任何维度

class InfiniteVolume: # such as a point, line, plane, volume, 4d-volume
    def __init__(self, points): # two points for line, three points for plane, etc.
        self.points = points
        assert all(len(p)==len(points[0]) for p in points)
    def vdim(self): # Dimensions of the volume. For example 2.
        return len(self.points)-1
    def wdim(self): # Dimensions of the world.  For example 3.
        return len(self.points[0])
    def __contains__(self, point):
        # ???
    def intersect(self, other):
        assert self.wdim() == other.wdim()
        # ???

您试图表示嵌入在m维空间中的n维空间。例如,(N=2, M=3)是三维"世界"中的一个平面。

如果你愿意,你可以实现一个定义点的集合,但是表示这样一个子空间的自然方式是用一组线性方程或基向量,所以这应该是基本的实现。如果你用基向量,有N个。如果你使用方程,每一个都减少1个维数,所以有M-N个。

要找到两个这样的子空间的交点,你只需要将它们的集合组合起来,并简化(到一组线性无关的向量或方程)。交点的维数可以是0到n之间的任意数

这些技术是直接和众所周知的,并且属于线性代数的标题。

编辑:
我认为处理基向量是最简单的。

  1. 使用点来获得基向量。
  2. 使用基向量求正交空间的基向量(例如,如果空间是二维的直线,那么正交空间就是一条垂直线;如果空间是三维的直线,那么正交空间就是一条垂直于直线的平面;如果空间是三维的平面,那么正交空间就是一条垂直于平面的直线)。
  3. 如果你愿意,从正交空间的向量中得到空间的方程是很简单的。
  4. 要得到两个空间的交点,取它们的基并并,并约为一个基。求出一个公点,就完成了。

相关内容

  • 没有找到相关文章

最新更新