如何以六边形坐标反映一条线周围的点

时间:2016-07-29 05:59:54

标签: reflection hexagonal-tiles

我有一个六边形坐标系,如下所示:

The hexagonal coordinate system I use.

(如果你想更好地理解坐标系,我是从here中学到的)

我想反映给定行的点(六边形)。事实上,我需要反映的唯一线是由(0, 0)的边界和其周围的其他六边形定义的线。

例如,(0, 0)(1, 0)的边框会创建一条线。 (0, 1)(1, -1)都是这一行的要点。与(0, 0)接壤的六边形有助于定义直线(在本例中为(1, 0)),我称之为“边界六边形”。

我的问题是:是否有比我下面描述的更简单的算法,它采用边界六边形的坐标和网格上的另一个六边形(称为目标六边形),并返回目标六边形的坐标。由(0, 0)和边界六边形定义的线上的反射?

我目前的方法是:

  1. 使用边界六边形的坐标作为垂直向量 到反射线
  2. 取出原始边界六边形周围的两个边界六边形的坐标,并将它们减去(x2-x1, y2-y1)以得到一个平行于反射线的矢量
  3. 使用坐标矩阵的变换将目标六边形的坐标转换为平行和垂直分量,以便(perpendicular component)*(perpendicular vector)+(parallel component)*(parallel vector) = (objective hexagon coordinates)
  4. 反射的结果是(objective hexagon coordinates)+2*(perpendicular component)*(perpendicular vector)
  5. 有谁知道更好的方法?对于这样一个看似简单的问题,这似乎相当复杂。

0 个答案:

没有答案