我试图从六边形的中心到它的顶点获取方向。但是我无法通过for循环弄清楚如何做到这一点,所以我只是做了一个switch语句和一堆案例。
也许是因为我累了,也许是因为我是一个相对新手......原因并不重要。
有人可以帮我正确地制定这段代码吗?
Vector2 dir;
for(int i = 0; i < 6; i++) {
switch (i) {
case 0:
dir = new Vector2(0, 3);
break;
case 1:
dir = new Vector2(0, -3);
break;
case 2:
dir = new Vector2(2, 1);
break;
case 3:
dir = new Vector2(2, -1);
break;
case 4:
dir = new Vector2(-2, -1);
break;
case 5:
dir = new Vector2(-2, 1);
break;
}
}
非常感谢!
编辑:澄清
感谢您的所有建议,但我真正想要的是:
for(int i = 0; i < 6; i++){
dir = new Vector2(f(i), g(i));
//Code
}
其中 f(i)是一个给出所需x坐标的函数,而 g(i)给出了所需的y坐标。 如果这样的话甚至可能。
由于dir赋值后的代码,for循环是必要的。
答案 0 :(得分:1)
半径为2的六边形和边2,顶部和底部有平坦的边
List<Vector> vertices = new List<Vector>() {
new Vector(-1,Math.Sqrt(3)),
new Vector(1, Math.Sqrt(3)),
new Vector(2, 0),
new Vector(1, -1 * Math.Sqrt(3)),
new Vector(-1, -1 * Math.Sqrt(3)),
new Vector(-2, 0)
};
答案 1 :(得分:1)
您可以通过删除for和switch来简化该代码,如下所示:
2015-09-17 09:00:00
顺便说一下,这不是正常的六角形,我相信你知道。
答案 2 :(得分:0)
在这种情况下,如果您的第一个点位于(x,y),则相邻点(60度距离)位于x'= xSin60-yCos60且y'= xCos60 + ySin60。要获得下一个点使用120度。 - 格雷厄姆
解决了它。我完全忘记了三角函数...谢谢:)