假设我有一个这样的三角形:
以及点[A,B,C,D,E,F]
有没有办法计算三角形的120˚旋转版本的数组,其中数组看起来像[C,E,F,B,D,A]
或[F,D,A,E,B,C]
。我正在寻找一种方法,它也可以用于分割成小块的三角形。
答案 0 :(得分:1)
想象一下,你会像你一样填充阵列,但是按照以下方式:
从三角形的中心直线到A点
将其旋转到右侧。它将接触点B,C,E,F和D.以这种方式填充阵列:ABCEFD。
然后很清楚120度旋转后的样子:CEFDAB,再经过120度:FDABCE。你只需要将数组内容向左旋转2个位置。
那么,最初是否真的需要以不太适应的顺序ABCDEF来表达你的数组?
答案 1 :(得分:1)
假设旋转在顺时针方向上只能正好是120度且给定的起始数组是[A,B,C,D,E,F]
,很容易看出A,C,F
只会占据索引{{1} }和0,2,5
只会占用索引B,D,E
单个120度旋转会产生简单的排列规则
1,3,4
这可以进一步抽象为简单的代码
答案 2 :(得分:0)
由于这总是120˚的倍数,因此最简单的方法是计算两个旋转120˚和240˚的排列。这些排列只会将点映射到数组中的新位置。
答案 3 :(得分:0)
一般来说,没有算法可以“猜测”你如何表示顶点。
要么必须有系统的方式告诉我们,要么你可以按如下方式工作:对于每个顶点,将120°旋转应用于坐标并找到与它们匹配的另一个顶点。