2013-10-27 58 views
0

我正在为iOS应用程序沿着圆形路径绘制正方形。但是,在圆周的某些点上,正方形开始离开圆的圆周。我如何确保广场留在里面?沿圆周围保持正方形

enter image description here

这是我做的说明。该绿色方块代表的位置,我需要的平方实际上是在红色方块是他们实际出现给予每平方米的左上角以下值:

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

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

编辑:我改变了我的设计,以沿圆形路径,而不是他们的左上角的方格中心位置。

+0

@qegal并非总是如此。如果角度大约是190°,那么它的底部只有一小部分会掉出来,所以将它向上移动一个完整的正方形高度会大大地抵消正方形。 – Mahouk

回答

0

ryan cumley的回答让我意识到我一直都很傻。我只需要将每个方块的锚点更改为解决此问题的中心&。现在,每个计算出的值x & y都会将每个方块的中心精确定位在圆形路径上。

+1

永远不会对你提出的解决方案感到“哑巴”,总有许多可接受的方式来完成大多数任务,并且很多时候功能比聪明更好。很高兴它对你有效 –

1

为什么不只是在较大的一个小圆圈内画出正方形的中心呢?

你可以做数学计算确切的半径必须是确保一个确切的适合,但你可能会快速尝试和错误你的方式。

这样做可以确保您的物体最终会摆放在一个实际的圆上,但如果您只是确保每个正方形的一个角落触及较大的边界圆,则情况并非如此将创建一个稍微八角形而不是圆形)

+0

我写了解决方案作为答案。谢谢!这个答案是我的顿悟。 – Mahouk

+2

太棒了!随意将其标记为您选择的答案,以便稍后访问此问题的人员知道您选择的是什么! –

+0

我会尽快让我(在22小时内)。 – Mahouk

0

选项1)您始终可以找到圆的直径,然后使用毕达哥拉斯定理,可以创建一个完全适合圆的正方形。然后,您可以循环通过圈子中创建的正方形来创建更小的正方形,但我怀疑这是您的目标。

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