甚至在圆上分布对象

时间:2017-08-07 17:04:14

标签: math unity3d

我是根据两个位置动态创建一个圆圈;第一个是中心,第二个是半径。然后我通过int fillCount = Mathf.RoundToInt(circumference / sizeOfObject);

确定我的对象有多少适合圆圈的周长

所以现在我有一个圆圈,我知道有多少东西适合它,我知道圆周,我知道半径,我拼凑了一个函数,可以找到任何给定点的Vector3圈子。

我无法弄清楚的是如何均匀分布每个对象。即,每隔'n'度放置一个物体。我不认为我需要担心电弧重新参数化,或者我呢?我认为答案在于通过使用反余弦/正弦来找到放置的程度,但我不确定并且我的数学不是那么好。

如果有人有任何意见或建议,我会非常感激。

1 个答案:

答案 0 :(得分:3)

如果您知道圆圈中有多少个对象,则可以将360deg除以对象数,以确定每个对象将放置在圆上的角度。由于我们知道圆圈上的点位于x=r*cos(angle), y=r*sin(angle),因此您可以将此Vector2添加到圈子的Vector2中心。

例如,如果您有3个对象放置在圆圈周围。通过除以360/3 = 120来获得角度。每个物体彼此相距120度 选择你的起点(我们将选择0度),
 Vector2(r*Mathf.Deg2Rad*cos(0), r*Mathf.Deg2Rad*sin(0))
下一个对象将是120deg,这将是
Vector2(r*Mathf.Deg2Rad*cos(120), r*Mathf.Deg2Rad*sin(120))
同样,第三个对象将是240deg,
Vector2(r*Mathf.Deg2Rad*cos(240), r*Mathf.Deg2Rad*sin(240))