好的,我需要一些答案空间来放置所有这些信息。
首先,您需要计算给定三角形的角度。您可以通过以下方式做到这一点:
int angle = (360 / numberOfElements) * triangleIndex;
您还需要计算出一个“切片”(不要不知道那是什么,只是阅读它)用于计算新位置:
var slice = (2 * Math.PI / numberOfElements) * triangleIndex;
接下来,您需要计算出每个三角形的位置:
int tempRadius = radius + (int)(triangleHeight / 2);
int traingleCentreX = (int)(centre.X + tempRadius * Math.Cos(slice));
int traingleCentreY = (int)(centre.Y + tempRadius * Math.Sin(slice));
//assuming centre is the centre of the circle
[所有这些数学的功劳归于这个答案
]
现在您有了每个三角形的正确位置,您应该能够应用旋转(使用angle
),它应该看起来很棒!
注意:位置将从右侧开始计算(即 90 度)。因此,在进行旋转时,请额外增加 90 度!
http://jsfiddle.net/TcENr/(它是最快的测试!)