Geometry 在加号形状中寻找相对位置

Geometry 在加号形状中寻找相对位置,geometry,Geometry,我正在做一个犹豫不决的图书馆。为了在由4个单位正方形平铺的二维平面中找到绝对点a的相对位置,我使用rel.x=abs.x%4;相对y=绝对y%4。这是好的,并产生了预期的结果。但是如果我用3个单位的正形状来平铺平面呢?我如何找到绝对位置?此处显示了瓷砖形状,1是形状的一部分,0是空白区域 0 1 0 1 1 1 0 1 0 例如,如果点a位于x=1,y=1上,则绝对位置应为x=1,y=1。但是如果它是打开的,比如说x=4,y=1,那么绝对位置应该是x=1,y=2。你看,还有另一个加号,它的

我正在做一个犹豫不决的图书馆。为了在由4个单位正方形平铺的二维平面中找到绝对点
a
的相对位置,我使用
rel.x=abs.x%4;相对y=绝对y%4
。这是好的,并产生了预期的结果。但是如果我用3个单位的正形状来平铺平面呢?我如何找到绝对位置?此处显示了瓷砖形状,1是形状的一部分,0是空白区域

0 1 0
1 1 1 
0 1 0 

例如,如果点
a
位于
x=1,y=1
上,则绝对位置应为
x=1,y=1
。但是如果它是打开的,比如说
x=4,y=1
,那么绝对位置应该是
x=1,y=2
。你看,还有另一个加号,它的底部是点
x=1,y=2
。这是如何在数学上实现的?任何语言,伪代码都很好。:)

沿X轴和Y轴存在周期性,周期为5。如此长的开关表达式可能如下所示:

case y % 5 of:
     0: case x % 5 of
         0: cx = x - 1; cy = y;
         1: cx = x; cy = y + 1;
         2: cx = x; cy = y - 1;
         3: cx = x + 1; cy = y;
         4: cx = x; cy = y; 
    1:...
或者我们可以创建常数数组5x5,并用移位-1、0、1填充它

 dx: [[-1,0,0,1,0],[1,0,-1,0,0],[0,0,1,0,-1],[0,-1,0,0,1],[0,1,0,-1,0]]
 dy: [[0,1,-1,0,0],[0,0,0,1,-1],[1,-1,0,0,0],[0,0,1,-1,0],[-1,0,0,0,1]]
我觉得可能存在一些简单的公式

编辑:更简单的版本:

 const dx0: [-1,0,0,1,0]
 const dy0: [0,1,-1,0,0]

 ixy = (x - 2 * y + 10) % 5;
 dx = dx0[ixy];   
 dy = dy0[ixy]; 
最后是没有常量数组的疯狂单行程序

 dx = (((11 + x - 2 * (y%5)) %  5) ^ 1 - 2) / 2    //^=xor; /2 - integer division
 dy = ((13 + x - 2 * (y%5)) %  5 - 2) / 2  

沿X轴和Y轴存在周期性,周期为5。如此长的开关表达式可能如下所示:

case y % 5 of:
     0: case x % 5 of
         0: cx = x - 1; cy = y;
         1: cx = x; cy = y + 1;
         2: cx = x; cy = y - 1;
         3: cx = x + 1; cy = y;
         4: cx = x; cy = y; 
    1:...
或者我们可以创建常数数组5x5,并用移位-1、0、1填充它

 dx: [[-1,0,0,1,0],[1,0,-1,0,0],[0,0,1,0,-1],[0,-1,0,0,1],[0,1,0,-1,0]]
 dy: [[0,1,-1,0,0],[0,0,0,1,-1],[1,-1,0,0,0],[0,0,1,-1,0],[-1,0,0,0,1]]
我觉得可能存在一些简单的公式

编辑:更简单的版本:

 const dx0: [-1,0,0,1,0]
 const dy0: [0,1,-1,0,0]

 ixy = (x - 2 * y + 10) % 5;
 dx = dx0[ixy];   
 dy = dy0[ixy]; 
最后是没有常量数组的疯狂单行程序

 dx = (((11 + x - 2 * (y%5)) %  5) ^ 1 - 2) / 2    //^=xor; /2 - integer division
 dy = ((13 + x - 2 * (y%5)) %  5 - 2) / 2  

如果需要,我可以制作一个图像:)你所说的加号形状的绝对位置-加号的中心坐标是什么意思?(是的,我意识到这种形状的紧密排列-有两种:右上和右下)@MBo绝对位置是以加号中心为中心的3x3正方形的绝对位置。而且它们紧密排列:)值得指定(显示)坐标原点和平铺类型。RRD平铺图片帮助:i.pinimg.com/236x/00/20/66/002066c83fcf2efb7acd44224403b272-图案到彩色纺织品图案。JPG你为什么混淆了相对位置和绝对位置?“为了找到…的相对位置,我使用了
abs.x=a.x%4
..”如果需要,我可以制作一个图像:)你所说的加号形状的绝对位置是什么意思-加号的中心坐标哪个点所属?(是的,我意识到这种形状的紧密排列-有两种:右上和右下)@MBo绝对位置是以加号中心为中心的3x3正方形的绝对位置。而且它们紧密排列:)值得指定(显示)坐标原点和平铺类型。RRD平铺图片帮助:i.pinimg.com/236x/00/20/66/002066c83fcf2efb7acd44224403b272-图案到彩色纺织品图案。JPG你为什么混淆了相对位置和绝对位置?“为了找到…的相对位置,我使用了
abs.x=a.x%4
…”所以,这里没有一个简单的方法?可以是两行或类似的东西。我现在会尝试一下,但请保持答案开放,以便其他人可以发布:)感谢您的帮助阵列方法是四行:)非常好的工作。非常感谢你的帮助,我可以看到你付出了很多努力来帮助我。谢谢uuu:Dyour最好的:我觉得,我知道!;-)所以,这里没有直截了当的方法?可以是两行或类似的东西。我现在会尝试一下,但请保持答案开放,以便其他人可以发布:)感谢您的帮助阵列方法是四行:)非常好的工作。非常感谢你的帮助,我可以看到你付出了很多努力来帮助我。谢谢uuu:Dyour最好的:我觉得,我知道!;-)