1

我正在为 iOS 应用程序沿着圆形路径绘制正方形。然而,在圆的某些点上,正方形开始超出圆的圆周。我如何确保方块留在里面?

在此处输入图像描述

这是我做的一个插图。绿色方块代表我需要方块实际所处的位置。红色方块是它们实际出现的位置,给定每个方块左上角的以下值:

x = origin.x + radius * cos(DEGREES_TO_RADIANS(angle));
y = origin.y + radius * sin(DEGREES_TO_RADIANS(angle));

原点是指圆心。我有一个循环,对从 1 到 360 度的每个角度重复此操作。

编辑:我改变了我的设计,将正方形的中心定位在圆形路径上,而不是它们的左上角。

4

3 回答 3

1

ryan cumley 的回答让我意识到我一直以来是多么愚蠢。我只需要将每个正方形的锚点更改为它的中心就可以解决它。现在 x & y 的每个计算值都会将每个正方形的中心精确地定位在圆形路径上。

于 2013-10-27T04:02:38.340 回答
1

为什么不沿着较大的圆圈内的较小圆圈绘制正方形的中心?

您可以进行数学计算以准确计算出半径必须是多少才能确保精确匹配,但您也可以快速尝试错误的方式。

这样做可以确保您的对象最终也会布置在一个实际的圆圈中,如果您只是确保每个正方形的一个且只有一个角接触较大的边界圆(这会创建一个稍微八角形而不是圆形)

于 2013-10-27T03:21:48.583 回答
0

选项 1)您总是可以找到圆的直径,然后使用勾股定理,您可以创建一个完全适合圆的正方形。然后,您可以遍历刚刚在圆圈中制作的正方形以创建较小的正方形,但我怀疑这就是您的目标。

选项2)找出正方形对角线长度的一半应该是多少,并在第一个环内创建一个环。然后沿着内部路径在关键点(例如 30 度或 15 度等)放置正方形。例如:http: //i.imgur.com/1XYhoQ0.png 如您所见,较小的(内)圆位于每个绿色正方形的中心,这样可以确保每个正方形的角刚好接触到较大的(外) 圆圈。显然,我廉价制作的画作并不完美,但在数学上它会起作用。

于 2013-10-27T03:52:59.140 回答