寻找六角形路径的坐标

时间:2013-04-11 20:36:02

标签: algorithm math graphics linear-algebra graph-algorithm

我试图将一条沿着直线(2点)的运动转换为沿着六角形路径的运动,我尝试了不同的公式并且没有用。

enter image description here

我想根据A和B找出P,Q,R,M的坐标。 我希望有人建议一个更好的公式,它给我一个移动长六边形路径的坐标。

2 个答案:

答案 0 :(得分:5)

如果您熟悉复数(假设这是一个正六边形),

D = B - A
P = A + D( 1 + sqrt(3)i )/4
Q = A + D( 3 + sqrt(3)i )/4
R = A + D( 1 - sqrt(3)i )/4
M = A + D( 3 - sqrt(3)i )/4

修改

如果您熟悉复杂的数字,我们不应该尝试在这里使用它们。它们是一个很棒的工具,但起初并不容易掌握。让我们做很多事情:

A =(A x ,A y
B =(B x ,B y
D = B - A =(D x ,D y )其中D x = A x -B < sub> x 和D y = A y -B y
P =(A x + D x / 4 - sqrt(3)D y / 4,A y + D y / 4 + sqrt(3)D x / 4)
Q =(A x + 3D x / 4 - sqrt(3)D y / 4,A y + 3D y / 4 + sqrt(3)D x / 4)
R =(A x + D x / 4 + sqrt(3)D y / 4,A y + D y / 4 - sqrt(3)D x / 4)
M =(A x + 3D x / 4 + sqrt(3)D y / 4,A y + 3D y / 4 - sqrt(3)D x / 4)

答案 1 :(得分:0)

如果你想象你的六边形是由矢量组成的 - 具有幅度(距离)和方向的线(从西到东的地平线逆时针旋转的角度),这更容易概念化。

将矢量从A调用到B D.如果使用某些三角法来计算六边形的几何形状,则D的幅度是六边形长度的两倍。因此,我们可以使用它来构造与我们的其他六边形一样大的矢量,从而获得六边形的其他点。

取向量D,将其大小减半,将其旋转60度ccw并将此新向量添加到A的位置。这给你P

做同样的事情,但将它旋转60度,并将其添加到A的位置。这给你R。

同样,Q是矢量D减半,旋转60度,反转并加到B的位置。

最后,M是矢量D减半,旋转60度ccw,反转并加到B的位置。

(要将矢量转换为移动的x距离和移动的y距离,请将幅度乘以角度的cos和角度的sin。确保使用弧度(如果需要弧度)和度数(如果度数)需要的。)