我是根据两个位置动态创建一个圆圈;第一个是中心,第二个是半径。然后我通过int fillCount = Mathf.RoundToInt(circumference / sizeOfObject);
所以现在我有一个圆圈,我知道有多少东西适合它,我知道圆周,我知道半径,我拼凑了一个函数,可以找到任何给定点的Vector3圈子。
我无法弄清楚的是如何均匀分布每个对象。即,每隔'n'度放置一个物体。我不认为我需要担心电弧重新参数化,或者我呢?我认为答案在于通过使用反余弦/正弦来找到放置的程度,但我不确定并且我的数学不是那么好。
如果有人有任何意见或建议,我会非常感激。
答案 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))