是否有一个 属性 的点,在 2D space 中的每个位置都不同?
Is there a property of a point, that is different in every position in 2D space?
是否有任何从点坐标计算出来的数字(我称之为点属性),只有两个点在完全相同的位置时才相同?
例如属性“该点与其他点的距离”,例如原点[0,0],不是我要搜索的属性,因为每个点在具有质心的圆上,另一个点具有与 属性.
相同的值
最好的解决方案是 属性,如果我有两点的这种属性,我就能计算出它们之间的距离。
合并坐标以获得单个值。例如,如果坐标是 32 位整数,那么使用移位、乘法或类型转换
为这样的点生成 uint64 值并不难
val = pt.x + (pt.y << 32)
val = pt.x + pt.y * 4 294 967 296
val = (uint64) pt
然后在需要的时候提取组件
x = val & 0xFFFFFFFF
y = val >> 32
如果坐标范围很小(比如10000),一个int32
值可以存储两个分量
您想将 space 的维数从 2 减少到 1。理论上,由于数字的无限性,这对于有限域是可能的。您将使用 space-filling curve 完成这一理论壮举。您不能为无限 2D space.
构建 space 填充曲线
但是因为我们在一个编程站点上,所以我假设您想在计算机上实现它。现在数字不再是无限的,我们只有一组有限的数字。而这不可能用一个浮点数来表示两个浮点数中的所有信息。
现在,如果您谈论的是有限离散域(具有整数坐标的网格中的点,例如图像的像素),那么问题就简单多了。 ,可以设计其他映射。处理网格元素或像素的最典型解决方案是计算 x + width * y
或 y + height * x
,其中 width
和 height
是 grid/image 的宽度和高度,以及从 0 开始的整数坐标。这导致了一个紧凑的表示,其中给定范围内的每个整数都映射到一个坐标。
是否有任何从点坐标计算出来的数字(我称之为点属性),只有两个点在完全相同的位置时才相同?
例如属性“该点与其他点的距离”,例如原点[0,0],不是我要搜索的属性,因为每个点在具有质心的圆上,另一个点具有与 属性.
相同的值最好的解决方案是 属性,如果我有两点的这种属性,我就能计算出它们之间的距离。
合并坐标以获得单个值。例如,如果坐标是 32 位整数,那么使用移位、乘法或类型转换
为这样的点生成 uint64 值并不难val = pt.x + (pt.y << 32)
val = pt.x + pt.y * 4 294 967 296
val = (uint64) pt
然后在需要的时候提取组件
x = val & 0xFFFFFFFF
y = val >> 32
如果坐标范围很小(比如10000),一个int32
值可以存储两个分量
您想将 space 的维数从 2 减少到 1。理论上,由于数字的无限性,这对于有限域是可能的。您将使用 space-filling curve 完成这一理论壮举。您不能为无限 2D space.
构建 space 填充曲线但是因为我们在一个编程站点上,所以我假设您想在计算机上实现它。现在数字不再是无限的,我们只有一组有限的数字。而这不可能用一个浮点数来表示两个浮点数中的所有信息。
现在,如果您谈论的是有限离散域(具有整数坐标的网格中的点,例如图像的像素),那么问题就简单多了。 x + width * y
或 y + height * x
,其中 width
和 height
是 grid/image 的宽度和高度,以及从 0 开始的整数坐标。这导致了一个紧凑的表示,其中给定范围内的每个整数都映射到一个坐标。